summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/ext
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/wiredtiger/ext')
-rw-r--r--src/third_party/wiredtiger/ext/collators/revint/revint_collator.c21
-rw-r--r--src/third_party/wiredtiger/ext/compressors/lz4/lz4_compress.c9
-rw-r--r--src/third_party/wiredtiger/ext/compressors/nop/nop_compress.c9
-rw-r--r--src/third_party/wiredtiger/ext/compressors/snappy/snappy_compress.c9
-rw-r--r--src/third_party/wiredtiger/ext/compressors/zlib/zlib_compress.c9
-rw-r--r--src/third_party/wiredtiger/ext/compressors/zstd/zstd_compress.c8
-rw-r--r--src/third_party/wiredtiger/ext/encryptors/nop/nop_encrypt.c9
-rw-r--r--src/third_party/wiredtiger/ext/encryptors/rotn/rotn_encrypt.c8
-rw-r--r--src/third_party/wiredtiger/ext/extractors/csv/csv_extractor.c59
-rw-r--r--src/third_party/wiredtiger/ext/test/fail_fs/fail_fs.c12
10 files changed, 116 insertions, 37 deletions
diff --git a/src/third_party/wiredtiger/ext/collators/revint/revint_collator.c b/src/third_party/wiredtiger/ext/collators/revint/revint_collator.c
index 00c8bf93acb..b080a5e4d6a 100644
--- a/src/third_party/wiredtiger/ext/collators/revint/revint_collator.c
+++ b/src/third_party/wiredtiger/ext/collators/revint/revint_collator.c
@@ -80,9 +80,10 @@ revint_compare(WT_COLLATOR *collator,
* when comparing primary keys.
*/
if ((ret = wt_api->unpack_start(
- wt_api, session, "ii", k1->data, k1->size, &pstream)) != 0 ||
- (ret = wt_api->unpack_int(wt_api, pstream, &i1)) != 0)
+ wt_api, session, "ii", k1->data, k1->size, &pstream)) != 0)
return (ret);
+ if ((ret = wt_api->unpack_int(wt_api, pstream, &i1)) != 0)
+ goto err;
if ((ret = wt_api->unpack_int(wt_api, pstream, &p1)) != 0)
/* A missing primary key is OK and sorts first. */
p1 = INT64_MIN;
@@ -91,9 +92,12 @@ revint_compare(WT_COLLATOR *collator,
/* Unpack the second pair of numbers. */
if ((ret = wt_api->unpack_start(
- wt_api, session, "ii", k2->data, k2->size, &pstream)) != 0 ||
- (ret = wt_api->unpack_int(wt_api, pstream, &i2)) != 0)
+ wt_api, session, "ii", k2->data, k2->size, &pstream)) != 0)
return (ret);
+ if ((ret = wt_api->unpack_int(wt_api, pstream, &i2)) != 0) {
+err: (void)wt_api->pack_close(wt_api, pstream, NULL);
+ return (ret);
+ }
if ((ret = wt_api->unpack_int(wt_api, pstream, &p2)) != 0)
/* A missing primary key is OK and sorts first. */
p2 = INT64_MIN;
@@ -138,6 +142,7 @@ int
wiredtiger_extension_init(WT_CONNECTION *connection, WT_CONFIG_ARG *config)
{
REVINT_COLLATOR *revint_collator;
+ int ret;
(void)config; /* Unused parameters */
@@ -148,6 +153,10 @@ wiredtiger_extension_init(WT_CONNECTION *connection, WT_CONFIG_ARG *config)
revint_collator->collator.terminate = revint_terminate;
revint_collator->wt_api = connection->get_extension_api(connection);
- return (connection->add_collator(
- connection, "revint", &revint_collator->collator, NULL));
+ if ((ret = connection->add_collator(
+ connection, "revint", (WT_COLLATOR *)revint_collator, NULL)) == 0)
+ return (0);
+
+ free(revint_collator);
+ return (ret);
}
diff --git a/src/third_party/wiredtiger/ext/compressors/lz4/lz4_compress.c b/src/third_party/wiredtiger/ext/compressors/lz4/lz4_compress.c
index 1f32ff910d6..dc90500dcdb 100644
--- a/src/third_party/wiredtiger/ext/compressors/lz4/lz4_compress.c
+++ b/src/third_party/wiredtiger/ext/compressors/lz4/lz4_compress.c
@@ -375,6 +375,7 @@ static int
lz_add_compressor(WT_CONNECTION *connection, bool raw, const char *name)
{
LZ4_COMPRESSOR *lz4_compressor;
+ int ret;
/*
* There are two almost identical LZ4 compressors: one using raw
@@ -392,8 +393,12 @@ lz_add_compressor(WT_CONNECTION *connection, bool raw, const char *name)
lz4_compressor->wt_api = connection->get_extension_api(connection);
/* Load the compressor */
- return (connection->add_compressor(
- connection, name, (WT_COMPRESSOR *)lz4_compressor, NULL));
+ if ((ret = connection->add_compressor(
+ connection, name, (WT_COMPRESSOR *)lz4_compressor, NULL)) == 0)
+ return (0);
+
+ free(lz4_compressor);
+ return (ret);
}
int lz4_extension_init(WT_CONNECTION *, WT_CONFIG_ARG *);
diff --git a/src/third_party/wiredtiger/ext/compressors/nop/nop_compress.c b/src/third_party/wiredtiger/ext/compressors/nop/nop_compress.c
index f739ffa4777..586f6c8831b 100644
--- a/src/third_party/wiredtiger/ext/compressors/nop/nop_compress.c
+++ b/src/third_party/wiredtiger/ext/compressors/nop/nop_compress.c
@@ -155,6 +155,7 @@ int
wiredtiger_extension_init(WT_CONNECTION *connection, WT_CONFIG_ARG *config)
{
NOP_COMPRESSOR *nop_compressor;
+ int ret;
(void)config; /* Unused parameters */
@@ -177,7 +178,11 @@ wiredtiger_extension_init(WT_CONNECTION *connection, WT_CONFIG_ARG *config)
nop_compressor->wt_api = connection->get_extension_api(connection);
/* Load the compressor */
- return (connection->add_compressor(
- connection, "nop", (WT_COMPRESSOR *)nop_compressor, NULL));
+ if ((ret = connection->add_compressor(
+ connection, "nop", (WT_COMPRESSOR *)nop_compressor, NULL)) == 0)
+ return (0);
+
+ free(nop_compressor);
+ return (ret);
}
/*! [WT_COMPRESSOR initialization function] */
diff --git a/src/third_party/wiredtiger/ext/compressors/snappy/snappy_compress.c b/src/third_party/wiredtiger/ext/compressors/snappy/snappy_compress.c
index 26aa3082bc0..03a17d28a1b 100644
--- a/src/third_party/wiredtiger/ext/compressors/snappy/snappy_compress.c
+++ b/src/third_party/wiredtiger/ext/compressors/snappy/snappy_compress.c
@@ -252,6 +252,7 @@ int
snappy_extension_init(WT_CONNECTION *connection, WT_CONFIG_ARG *config)
{
SNAPPY_COMPRESSOR *snappy_compressor;
+ int ret;
(void)config; /* Unused parameters */
@@ -266,8 +267,12 @@ snappy_extension_init(WT_CONNECTION *connection, WT_CONFIG_ARG *config)
snappy_compressor->wt_api = connection->get_extension_api(connection);
- return (connection->add_compressor(
- connection, "snappy", (WT_COMPRESSOR *)snappy_compressor, NULL));
+ if ((ret = connection->add_compressor(connection,
+ "snappy", (WT_COMPRESSOR *)snappy_compressor, NULL)) == 0)
+ return (0);
+
+ free(snappy_compressor);
+ return (ret);
}
/*
diff --git a/src/third_party/wiredtiger/ext/compressors/zlib/zlib_compress.c b/src/third_party/wiredtiger/ext/compressors/zlib/zlib_compress.c
index 5ae54a25163..d5c0d0fb318 100644
--- a/src/third_party/wiredtiger/ext/compressors/zlib/zlib_compress.c
+++ b/src/third_party/wiredtiger/ext/compressors/zlib/zlib_compress.c
@@ -452,6 +452,7 @@ zlib_add_compressor(
WT_CONNECTION *connection, bool raw, const char *name, int zlib_level)
{
ZLIB_COMPRESSOR *zlib_compressor;
+ int ret;
/*
* There are two almost identical zlib compressors: one using raw
@@ -471,8 +472,12 @@ zlib_add_compressor(
zlib_compressor->zlib_level = zlib_level;
/* Load the compressor. */
- return (connection->add_compressor(
- connection, name, (WT_COMPRESSOR *)zlib_compressor, NULL));
+ if ((ret = connection->add_compressor(
+ connection, name, (WT_COMPRESSOR *)zlib_compressor, NULL)) == 0)
+ return (0);
+
+ free(zlib_compressor);
+ return (ret);
}
/*
diff --git a/src/third_party/wiredtiger/ext/compressors/zstd/zstd_compress.c b/src/third_party/wiredtiger/ext/compressors/zstd/zstd_compress.c
index 4f80694b0d1..40a872f92e2 100644
--- a/src/third_party/wiredtiger/ext/compressors/zstd/zstd_compress.c
+++ b/src/third_party/wiredtiger/ext/compressors/zstd/zstd_compress.c
@@ -315,8 +315,12 @@ zstd_extension_init(WT_CONNECTION *connection, WT_CONFIG_ARG *config)
zstd_compressor->compression_level = compression_level;
/* Load the compressor */
- return (connection->add_compressor(
- connection, "zstd", (WT_COMPRESSOR *)zstd_compressor, NULL));
+ if ((ret = connection->add_compressor(
+ connection, "zstd", (WT_COMPRESSOR *)zstd_compressor, NULL)) == 0)
+ return (0);
+
+ free(zstd_compressor);
+ return (ret);
}
/*
diff --git a/src/third_party/wiredtiger/ext/encryptors/nop/nop_encrypt.c b/src/third_party/wiredtiger/ext/encryptors/nop/nop_encrypt.c
index 0d04e51e395..edefab450a0 100644
--- a/src/third_party/wiredtiger/ext/encryptors/nop/nop_encrypt.c
+++ b/src/third_party/wiredtiger/ext/encryptors/nop/nop_encrypt.c
@@ -168,6 +168,7 @@ int
wiredtiger_extension_init(WT_CONNECTION *connection, WT_CONFIG_ARG *config)
{
NOP_ENCRYPTOR *nop_encryptor;
+ int ret;
(void)config; /* Unused parameters */
@@ -189,7 +190,11 @@ wiredtiger_extension_init(WT_CONNECTION *connection, WT_CONFIG_ARG *config)
nop_encryptor->wt_api = connection->get_extension_api(connection);
/* Load the encryptor */
- return (connection->add_encryptor(
- connection, "nop", (WT_ENCRYPTOR *)nop_encryptor, NULL));
+ if ((ret = connection->add_encryptor(
+ connection, "nop", (WT_ENCRYPTOR *)nop_encryptor, NULL)) == 0)
+ return (0);
+
+ free(nop_encryptor);
+ return (ret);
}
/*! [WT_ENCRYPTOR initialization function] */
diff --git a/src/third_party/wiredtiger/ext/encryptors/rotn/rotn_encrypt.c b/src/third_party/wiredtiger/ext/encryptors/rotn/rotn_encrypt.c
index f1e26eeaa23..6f46a950bfc 100644
--- a/src/third_party/wiredtiger/ext/encryptors/rotn/rotn_encrypt.c
+++ b/src/third_party/wiredtiger/ext/encryptors/rotn/rotn_encrypt.c
@@ -479,7 +479,11 @@ wiredtiger_extension_init(WT_CONNECTION *connection, WT_CONFIG_ARG *config)
return (ret);
}
/* Load the encryptor */
- return (connection->add_encryptor(
- connection, "rotn", (WT_ENCRYPTOR *)rotn_encryptor, NULL));
+ if ((ret = connection->add_encryptor(
+ connection, "rotn", (WT_ENCRYPTOR *)rotn_encryptor, NULL)) == 0)
+ return (0);
+
+ free(rotn_encryptor);
+ return (ret);
}
/*! [WT_ENCRYPTOR initialization function] */
diff --git a/src/third_party/wiredtiger/ext/extractors/csv/csv_extractor.c b/src/third_party/wiredtiger/ext/extractors/csv/csv_extractor.c
index 6ce64e240fe..f3c01bc3f41 100644
--- a/src/third_party/wiredtiger/ext/extractors/csv/csv_extractor.c
+++ b/src/third_party/wiredtiger/ext/extractors/csv/csv_extractor.c
@@ -147,7 +147,6 @@ csv_customize(WT_EXTRACTOR *extractor, WT_SESSION *session,
long field_num;
int ret;
- (void)session; /* Unused parameters */
(void)uri; /* Unused parameters */
orig = (const CSV_EXTRACTOR *)extractor;
@@ -155,34 +154,61 @@ csv_customize(WT_EXTRACTOR *extractor, WT_SESSION *session,
if ((ret = wt_api->config_parser_open(wt_api, session, appcfg->str,
appcfg->len, &parser)) != 0)
return (ret);
- if ((ret = parser->get(parser, "field", &field)) != 0 ||
- (ret = parser->get(parser, "format", &format)) != 0) {
- if (ret == WT_NOTFOUND) {
+ if ((ret = parser->get(parser, "field", &field)) != 0) {
+ if (ret == WT_NOTFOUND)
(void)wt_api->err_printf(
- wt_api, session, "field or format not found");
- return (WT_NOTFOUND);
- }
- return (ret);
+ wt_api, session, "field not found");
+ else
+ (void)wt_api->err_printf(
+ wt_api, session, "WT_CONFIG_PARSER.get: field: %s",
+ wt_api->strerror(wt_api, session, ret));
+ goto err;
+ }
+ if ((ret = parser->get(parser, "format", &format)) != 0) {
+ if (ret == WT_NOTFOUND)
+ (void)wt_api->err_printf(
+ wt_api, session, "format not found");
+ else
+ (void)wt_api->err_printf(
+ wt_api, session, "WT_CONFIG_PARSER.get: format: %s",
+ wt_api->strerror(wt_api, session, ret));
+ goto err;
+ }
+ ret = parser->close(parser);
+ parser = NULL;
+ if (ret != 0) {
+ (void)wt_api->err_printf(
+ wt_api, session, "WT_CONFIG_PARSER.close: %s",
+ wt_api->strerror(wt_api, session, ret));
}
+
field_num = strtol(field.str, NULL, 10);
if (field_num < 0 || field_num > INT_MAX) {
(void)wt_api->err_printf(
wt_api, session, "field: invalid format");
- return (EINVAL);
+ ret = EINVAL;
+ goto err;
}
if (format.len != 1 || (format.str[0] != 'S' && format.str[0] != 'i')) {
(void)wt_api->err_printf(
wt_api, session, "format: invalid format");
- return (EINVAL);
+ ret = EINVAL;
+ goto err;
+ }
+ if ((csv_extractor = calloc(1, sizeof(CSV_EXTRACTOR))) == NULL) {
+ ret = errno;
+ goto err;
}
- if ((csv_extractor = calloc(1, sizeof(CSV_EXTRACTOR))) == NULL)
- return (errno);
*csv_extractor = *orig;
csv_extractor->field = (int)field_num;
csv_extractor->format_isnum = (format.str[0] == 'i');
*customp = (WT_EXTRACTOR *)csv_extractor;
return (0);
+
+err: if (parser != NULL)
+ (void)parser->close(parser);
+ return (ret);
}
/*
@@ -207,6 +233,7 @@ int
wiredtiger_extension_init(WT_CONNECTION *connection, WT_CONFIG_ARG *config)
{
CSV_EXTRACTOR *csv_extractor;
+ int ret;
(void)config; /* Unused parameters */
@@ -218,6 +245,10 @@ wiredtiger_extension_init(WT_CONNECTION *connection, WT_CONFIG_ARG *config)
csv_extractor->extractor.terminate = csv_terminate;
csv_extractor->wt_api = connection->get_extension_api(connection);
- return (connection->add_extractor(
- connection, "csv", (WT_EXTRACTOR *)csv_extractor, NULL));
+ if ((ret = connection->add_extractor(
+ connection, "csv", (WT_EXTRACTOR *)csv_extractor, NULL)) == 0)
+ return (0);
+
+ free(csv_extractor);
+ return (ret);
}
diff --git a/src/third_party/wiredtiger/ext/test/fail_fs/fail_fs.c b/src/third_party/wiredtiger/ext/test/fail_fs/fail_fs.c
index bdb4669a637..b74144eb252 100644
--- a/src/third_party/wiredtiger/ext/test/fail_fs/fail_fs.c
+++ b/src/third_party/wiredtiger/ext/test/fail_fs/fail_fs.c
@@ -767,8 +767,10 @@ wiredtiger_extension_init(WT_CONNECTION *conn, WT_CONFIG_ARG *config)
int64_t argval;
int ret;
- ret = 0;
+ config_parser = NULL;
wtext = conn->get_extension_api(conn);
+ ret = 0;
+
if ((fail_fs = calloc(1, sizeof(FAIL_FILE_SYSTEM))) == NULL) {
(void)wtext->err_printf(wtext, NULL,
"fail_file_system extension_init: %s",
@@ -813,7 +815,9 @@ wiredtiger_extension_init(WT_CONNECTION *conn, WT_CONFIG_ARG *config)
wtext->strerror(wtext, NULL, ret));
goto err;
}
- if ((ret = config_parser->close(config_parser)) != 0) {
+ ret = config_parser->close(config_parser);
+ config_parser = NULL;
+ if (ret != 0) {
(void)wtext->err_printf(wtext, NULL,
"WT_CONFIG_PARSER.close: config: %s",
wtext->strerror(wtext, NULL, ret));
@@ -840,6 +844,8 @@ wiredtiger_extension_init(WT_CONNECTION *conn, WT_CONFIG_ARG *config)
}
return (0);
-err: free(fail_fs);
+err: if (config_parser != NULL)
+ (void)config_parser->close(config_parser);
+ free(fail_fs);
return (ret);
}