summaryrefslogtreecommitdiff
path: root/examples/c
diff options
context:
space:
mode:
authorKeith Bostic <keith.bostic@mongodb.com>2017-03-24 08:16:21 -0400
committerGitHub <noreply@github.com>2017-03-24 08:16:21 -0400
commit1ceddd4a972bf220db9585739e9fcb283d618da4 (patch)
tree131dbb5b03a9cd4ac7951aec8d6edeafcd59fc75 /examples/c
parent56fa32f25a0745b049789f31e7dd5128be9525a0 (diff)
downloadmongo-1ceddd4a972bf220db9585739e9fcb283d618da4.tar.gz
WT-3136 bug fix: WiredTiger doesn't check sprintf calls for error return (#3340)
* WT-3136 bug fix: WiredTiger doesn't check sprintf calls for error return Make a pass through the source base to check sprintf, snprintf, vsprintf and vsnprintf calls for errors. * A WiredTiger key is a uint64_t. Use sizeof(), don't hard-wire buffer sizes into the code. * More (u_int) vs. (uint64_t) fixes. * Use CONFIG_APPEND instead of FORMAT_APPEND, it makes more sense. * revert part of 4475ae9, there's an explicit allocation of the size of the buffer. * MVSC complaints: test\format\config.c(765): warning C4018: '<': signed/unsigned mismatch test\format\config.c(765): warning C4018: '>': signed/unsigned mismatch * Change Windows testing shim to correctly use __wt_snprintf * Change Windows test shim to use the __wt_XXX functions * MSDN's _vscprintf API returns the number of characters excluding the termininating nul byte, return that value.
Diffstat (limited to 'examples/c')
-rw-r--r--examples/c/ex_async.c6
-rw-r--r--examples/c/ex_backup.c28
-rw-r--r--examples/c/ex_encrypt.c4
-rw-r--r--examples/c/ex_log.c12
-rw-r--r--examples/c/ex_sync.c20
5 files changed, 36 insertions, 34 deletions
diff --git a/examples/c/ex_async.c b/examples/c/ex_async.c
index f7531a5c3d8..5cfafca0418 100644
--- a/examples/c/ex_async.c
+++ b/examples/c/ex_async.c
@@ -170,12 +170,12 @@ main(void)
* an asynchronous insert.
*/
/*! [async set the operation's string key] */
- snprintf(k[i], sizeof(k), "key%d", i);
+ (void)snprintf(k[i], sizeof(k), "key%d", i);
op->set_key(op, k[i]);
/*! [async set the operation's string key] */
/*! [async set the operation's string value] */
- snprintf(v[i], sizeof(v), "value%d", i);
+ (void)snprintf(v[i], sizeof(v), "value%d", i);
op->set_value(op, v[i]);
/*! [async set the operation's string value] */
@@ -218,7 +218,7 @@ main(void)
* Set the operation's string key and value, and then do
* an asynchronous search.
*/
- snprintf(k[i], sizeof(k), "key%d", i);
+ (void)snprintf(k[i], sizeof(k), "key%d", i);
op->set_key(op, k[i]);
ret = op->search(op);
/*! [async search] */
diff --git a/examples/c/ex_backup.c b/examples/c/ex_backup.c
index 0697cbb3458..83cc9b22ecc 100644
--- a/examples/c/ex_backup.c
+++ b/examples/c/ex_backup.c
@@ -96,7 +96,7 @@ compare_backups(int i)
if (i == 0)
(void)strncpy(msg, "MAIN", sizeof(msg));
else
- snprintf(msg, sizeof(msg), "%d", i);
+ (void)snprintf(msg, sizeof(msg), "%d", i);
printf(
"Iteration %s: Tables %s.%d and %s.%d %s\n",
msg, full_out, i, incr_out, i, ret == 0 ? "identical" : "differ");
@@ -131,8 +131,8 @@ setup_directories(void)
* For incremental backups we need 0-N. The 0 incremental
* directory will compare with the original at the end.
*/
- snprintf(buf, sizeof(buf), "rm -rf %s.%d && mkdir %s.%d",
- home_incr, i, home_incr, i);
+ (void)snprintf(buf, sizeof(buf),
+ "rm -rf %s.%d && mkdir %s.%d", home_incr, i, home_incr, i);
if ((ret = system(buf)) != 0) {
fprintf(stderr, "%s: failed ret %d\n", buf, ret);
return (ret);
@@ -142,8 +142,8 @@ setup_directories(void)
/*
* For full backups we need 1-N.
*/
- snprintf(buf, sizeof(buf), "rm -rf %s.%d && mkdir %s.%d",
- home_full, i, home_full, i);
+ (void)snprintf(buf, sizeof(buf),
+ "rm -rf %s.%d && mkdir %s.%d", home_full, i, home_full, i);
if ((ret = system(buf)) != 0) {
fprintf(stderr, "%s: failed ret %d\n", buf, ret);
return (ret);
@@ -164,8 +164,8 @@ add_work(WT_SESSION *session, int iter)
* Perform some operations with individual auto-commit transactions.
*/
for (i = 0; i < MAX_KEYS; i++) {
- snprintf(k, sizeof(k), "key.%d.%d", iter, i);
- snprintf(v, sizeof(v), "value.%d.%d", iter, i);
+ (void)snprintf(k, sizeof(k), "key.%d.%d", iter, i);
+ (void)snprintf(v, sizeof(v), "value.%d.%d", iter, i);
cursor->set_key(cursor, k);
cursor->set_value(cursor, v);
ret = cursor->insert(cursor);
@@ -187,7 +187,7 @@ take_full_backup(WT_SESSION *session, int i)
* directories. Otherwise only into the appropriate full directory.
*/
if (i != 0) {
- snprintf(h, sizeof(h), "%s.%d", home_full, i);
+ (void)snprintf(h, sizeof(h), "%s.%d", home_full, i);
hdir = h;
} else
hdir = home_incr;
@@ -200,14 +200,15 @@ take_full_backup(WT_SESSION *session, int i)
* Take a full backup into each incremental directory.
*/
for (j = 0; j < MAX_ITERATIONS; j++) {
- snprintf(h, sizeof(h), "%s.%d", home_incr, j);
+ (void)snprintf(h, sizeof(h),
+ "%s.%d", home_incr, j);
(void)snprintf(buf, sizeof(buf),
"cp %s/%s %s/%s",
home, filename, h, filename);
ret = system(buf);
}
else {
- snprintf(h, sizeof(h), "%s.%d", home_full, i);
+ (void)snprintf(h, sizeof(h), "%s.%d", home_full, i);
(void)snprintf(buf, sizeof(buf), "cp %s/%s %s/%s",
home, filename, hdir, filename);
ret = system(buf);
@@ -237,12 +238,12 @@ take_incr_backup(WT_SESSION *session, int i)
* Copy into the 0 incremental directory and then each of the
* incremental directories for this iteration and later.
*/
- snprintf(h, sizeof(h), "%s.0", home_incr);
+ (void)snprintf(h, sizeof(h), "%s.0", home_incr);
(void)snprintf(buf, sizeof(buf), "cp %s/%s %s/%s",
home, filename, h, filename);
ret = system(buf);
for (j = i; j < MAX_ITERATIONS; j++) {
- snprintf(h, sizeof(h), "%s.%d", home_incr, j);
+ (void)snprintf(h, sizeof(h), "%s.%d", home_incr, j);
(void)snprintf(buf, sizeof(buf), "cp %s/%s %s/%s",
home, filename, h, filename);
ret = system(buf);
@@ -270,7 +271,8 @@ main(void)
int i, ret;
char cmd_buf[256];
- snprintf(cmd_buf, sizeof(cmd_buf), "rm -rf %s && mkdir %s", home, home);
+ (void)snprintf(cmd_buf, sizeof(cmd_buf),
+ "rm -rf %s && mkdir %s", home, home);
if ((ret = system(cmd_buf)) != 0) {
fprintf(stderr, "%s: failed ret %d\n", cmd_buf, ret);
return (EXIT_FAILURE);
diff --git a/examples/c/ex_encrypt.c b/examples/c/ex_encrypt.c
index 00dc66fc24d..1520bd286cd 100644
--- a/examples/c/ex_encrypt.c
+++ b/examples/c/ex_encrypt.c
@@ -507,12 +507,12 @@ main(void)
* we decrypt on read.
*/
for (i = 0; i < MAX_KEYS; i++) {
- snprintf(keybuf, sizeof(keybuf), "key%d", i);
+ (void)snprintf(keybuf, sizeof(keybuf), "key%d", i);
c1->set_key(c1, keybuf);
c2->set_key(c2, keybuf);
nc->set_key(nc, keybuf);
- snprintf(valbuf, sizeof(valbuf), "value%d", i);
+ (void)snprintf(valbuf, sizeof(valbuf), "value%d", i);
c1->set_value(c1, valbuf);
c2->set_value(c2, valbuf);
nc->set_value(nc, valbuf);
diff --git a/examples/c/ex_log.c b/examples/c/ex_log.c
index fdbc39412ae..0d8fbf97233 100644
--- a/examples/c/ex_log.c
+++ b/examples/c/ex_log.c
@@ -291,8 +291,8 @@ main(void)
char cmd_buf[256], k[16], v[16];
count_min = 0;
- snprintf(cmd_buf, sizeof(cmd_buf), "rm -rf %s %s && mkdir %s %s",
- home1, home2, home1, home2);
+ (void)snprintf(cmd_buf, sizeof(cmd_buf),
+ "rm -rf %s %s && mkdir %s %s", home1, home2, home1, home2);
if ((ret = system(cmd_buf)) != 0) {
fprintf(stderr, "%s: failed ret %d\n", cmd_buf, ret);
return (EXIT_FAILURE);
@@ -312,8 +312,8 @@ main(void)
* Perform some operations with individual auto-commit transactions.
*/
for (record_count = 0, i = 0; i < MAX_KEYS; i++, record_count++) {
- snprintf(k, sizeof(k), "key%d", i);
- snprintf(v, sizeof(v), "value%d", i);
+ (void)snprintf(k, sizeof(k), "key%d", i);
+ (void)snprintf(v, sizeof(v), "value%d", i);
cursor->set_key(cursor, k);
cursor->set_value(cursor, v);
ret = cursor->insert(cursor);
@@ -324,8 +324,8 @@ main(void)
* Perform some operations within a single transaction.
*/
for (i = MAX_KEYS; i < MAX_KEYS+5; i++, record_count++) {
- snprintf(k, sizeof(k), "key%d", i);
- snprintf(v, sizeof(v), "value%d", i);
+ (void)snprintf(k, sizeof(k), "key%d", i);
+ (void)snprintf(v, sizeof(v), "value%d", i);
cursor->set_key(cursor, k);
cursor->set_value(cursor, v);
ret = cursor->insert(cursor);
diff --git a/examples/c/ex_sync.c b/examples/c/ex_sync.c
index 2c610b1e570..b2d74b52f7f 100644
--- a/examples/c/ex_sync.c
+++ b/examples/c/ex_sync.c
@@ -59,8 +59,8 @@ main(void)
char cmd_buf[256], k[16], v[16];
const char *conf;
- snprintf(cmd_buf, sizeof(cmd_buf), "rm -rf %s && mkdir %s",
- home, home);
+ (void)snprintf(cmd_buf, sizeof(cmd_buf),
+ "rm -rf %s && mkdir %s", home, home);
if ((ret = system(cmd_buf)) != 0) {
fprintf(stderr, "%s: failed ret %d\n", cmd_buf, ret);
return (EXIT_FAILURE);
@@ -98,8 +98,8 @@ main(void)
ret = session->commit_transaction(session, conf);
ret = session->begin_transaction(session, NULL);
}
- snprintf(k, sizeof(k), "key%d", i);
- snprintf(v, sizeof(v), "value%d", i);
+ (void)snprintf(k, sizeof(k), "key%d", i);
+ (void)snprintf(v, sizeof(v), "value%d", i);
cursor->set_key(cursor, k);
cursor->set_value(cursor, v);
ret = cursor->insert(cursor);
@@ -113,8 +113,8 @@ main(void)
* Perform some operations within a single transaction.
*/
for (i = MAX_KEYS; i < MAX_KEYS+5; i++, record_count++) {
- snprintf(k, sizeof(k), "key%d", i);
- snprintf(v, sizeof(v), "value%d", i);
+ (void)snprintf(k, sizeof(k), "key%d", i);
+ (void)snprintf(v, sizeof(v), "value%d", i);
cursor->set_key(cursor, k);
cursor->set_value(cursor, v);
ret = cursor->insert(cursor);
@@ -129,8 +129,8 @@ main(void)
* Demonstrate using log_flush to force the log to disk.
*/
for (i = 0; i < MAX_KEYS; i++, record_count++) {
- snprintf(k, sizeof(k), "key%d", record_count);
- snprintf(v, sizeof(v), "value%d", record_count);
+ (void)snprintf(k, sizeof(k), "key%d", record_count);
+ (void)snprintf(v, sizeof(v), "value%d", record_count);
cursor->set_key(cursor, k);
cursor->set_value(cursor, v);
ret = cursor->insert(cursor);
@@ -138,8 +138,8 @@ main(void)
ret = session->log_flush(session, "sync=on");
for (i = 0; i < MAX_KEYS; i++, record_count++) {
- snprintf(k, sizeof(k), "key%d", record_count);
- snprintf(v, sizeof(v), "value%d", record_count);
+ (void)snprintf(k, sizeof(k), "key%d", record_count);
+ (void)snprintf(v, sizeof(v), "value%d", record_count);
cursor->set_key(cursor, k);
cursor->set_value(cursor, v);
ret = cursor->insert(cursor);