diff options
-rw-r--r-- | collection/collection_tools.c | 5 | ||||
-rw-r--r-- | dhash/examples/dhash_test.c | 11 | ||||
-rw-r--r-- | ini/ini_config.c | 1 | ||||
-rw-r--r-- | ini/ini_config_ut.c | 6 | ||||
-rw-r--r-- | ini/ini_parse_ut.c | 103 | ||||
-rw-r--r-- | ini/ini_valueobj_ut.c | 8 |
6 files changed, 79 insertions, 55 deletions
diff --git a/collection/collection_tools.c b/collection/collection_tools.c index 54d96c3..7e60285 100644 --- a/collection/collection_tools.c +++ b/collection/collection_tools.c @@ -465,6 +465,11 @@ int col_serialize(const char *property_in, (const char *)(data), '"'); break; + /* Here and below it is safe to use sprintf() becuase we + * already pre-calculated the length and allocated buffer + * of the right size. + */ + case COL_TYPE_BINARY: buf_data->buffer[buf_data->length] = '\''; for (i = 0; i < length; i++) diff --git a/dhash/examples/dhash_test.c b/dhash/examples/dhash_test.c index 7b4cbbf..f57bc52 100644 --- a/dhash/examples/dhash_test.c +++ b/dhash/examples/dhash_test.c @@ -26,6 +26,7 @@ #include <getopt.h> #include "dhash.h" +#define BUF_SIZE 1024 #define DEFAULT_MAX_TEST (500) hash_entry_t *iter_result_1 = NULL; hash_entry_t *iter_result_2 = NULL; @@ -54,7 +55,7 @@ const char *error_string(int error) char *key_string(hash_key_t *key) { - static char buf[1024]; + static char buf[BUF_SIZE]; switch(key->type) { case HASH_KEY_ULONG: @@ -72,7 +73,7 @@ char *key_string(hash_key_t *key) char *value_string(hash_value_t *value) { - static char buf[1024]; + static char buf[BUF_SIZE]; switch(value->type) { case HASH_VALUE_UNDEF: @@ -109,7 +110,7 @@ char *value_string(hash_value_t *value) char *entry_string(hash_entry_t *entry) { - static char buf[1024]; + static char buf[BUF_SIZE]; snprintf(buf, sizeof(buf), "[%s] = [%s]", key_string(&entry->key), value_string(&entry->value)); @@ -151,7 +152,7 @@ int main(int argc, char **argv) hash_value_t old_value; hash_value_t new_value; hash_key_t key; - char buf[1024]; + char buf[BUF_SIZE]; hash_table_t *table = NULL; unsigned long callback_count = 0; unsigned long table_size = 0; @@ -259,7 +260,7 @@ int main(int argc, char **argv) * otherwise we'll use an unsigned long as the key */ if (test[i].val & 1) { key.type = HASH_KEY_STRING; - sprintf(buf, "%ld", test[i].val); + snprintf(buf, BUF_SIZE, "%ld", test[i].val); test[i].str = strdup(buf); } } diff --git a/ini/ini_config.c b/ini/ini_config.c index 4265f38..c0a908b 100644 --- a/ini/ini_config.c +++ b/ini/ini_config.c @@ -911,6 +911,7 @@ int config_for_app_with_metadata(const char *application, return error; } + /* It is safe to use sprintf() here */ sprintf(file_name, "%s%s%s.conf", config_dir, SLASH, application); TRACE_INFO_STRING("Opening file:", file_name); /* Read specific file */ diff --git a/ini/ini_config_ut.c b/ini/ini_config_ut.c index 34b395b..fff3c4e 100644 --- a/ini/ini_config_ut.c +++ b/ini/ini_config_ut.c @@ -1547,6 +1547,7 @@ int main(int argc, char *argv[]) char *srcdir = NULL; char *rundir = NULL; const char inidir[] = "/ini"; + int len = 0; if ((argc > 1) && (strcmp(argv[1], "-v") == 0)) verbose = 1; @@ -1555,14 +1556,15 @@ int main(int argc, char *argv[]) srcdir = getenv("srcdir"); if(srcdir) { - rundir = malloc(strlen(srcdir) + sizeof(inidir)); + len = strlen(srcdir) + sizeof(inidir); + rundir = malloc(len); if (!rundir) { printf("Failed to allocate memory to store path" " to the test files %d.\n", ENOMEM); return -1; } - sprintf(rundir, "%s%s", srcdir, inidir); + snprintf(rundir, len, "%s%s", srcdir, inidir); errno = 0; if(chdir(rundir) != 0) { diff --git a/ini/ini_parse_ut.c b/ini/ini_parse_ut.c index 5bf45b4..d6f812f 100644 --- a/ini/ini_parse_ut.c +++ b/ini/ini_parse_ut.c @@ -38,6 +38,8 @@ int verbose = 0; char *confdir = NULL; +#define VAL_SIZE 100 + #define INIOUT(foo) \ do { \ if (verbose) foo; \ @@ -185,9 +187,9 @@ int read_save_test(void) while(files[i]) { - sprintf(infile, "%s/ini/ini.d/%s.conf", (srcdir == NULL) ? "." : srcdir, - files[i]); - sprintf(outfile, "./%s.conf.out", files[i]); + snprintf(infile, PATH_MAX, "%s/ini/ini.d/%s.conf", + (srcdir == NULL) ? "." : srcdir, files[i]); + snprintf(outfile, PATH_MAX, "./%s.conf.out", files[i]); error = test_one_file(infile, outfile); INIOUT(printf("Test for file: %s returned %d\n", files[i], error)); i++; @@ -217,17 +219,18 @@ int read_again_test(void) while(files[i]) { - sprintf(infile, "./%s.conf.out", files[i]); - sprintf(outfile, "./%s.conf.2.out", files[i]); + snprintf(infile, PATH_MAX, "./%s.conf.out", files[i]); + snprintf(outfile, PATH_MAX, "./%s.conf.2.out", files[i]); error = test_one_file(infile, outfile); INIOUT(printf("Test for file: %s returned %d\n", files[i], error)); if (error) break; - sprintf(command,"diff -q %s %s", infile, outfile); + snprintf(command, PATH_MAX * 3, "diff -q %s %s", infile, outfile); error = system(command); INIOUT(printf("Comparison of %s %s returned: %d\n", infile, outfile, error)); if ((error) || (WEXITSTATUS(error))) { - printf("Failed to run copy command %d %d.\n", error, WEXITSTATUS(error)); + printf("Failed to run copy command %d %d.\n", error, + WEXITSTATUS(error)); error = -1; break; } @@ -340,7 +343,7 @@ int merge_values_test(void) srcdir = getenv("srcdir"); - sprintf(filename, "%s/ini/ini.d/foo.conf.in", + snprintf(filename, PATH_MAX, "%s/ini/ini.d/foo.conf.in", (srcdir == NULL) ? "." : srcdir); error = simplebuffer_alloc(&sbobj); @@ -381,7 +384,8 @@ int merge_values_test(void) error = ini_config_parse(file_ctx, ini_config); if (error) { - INIOUT(printf("Failed to parse configuration. Error %d.\n", error)); + INIOUT(printf("Failed to parse configuration. Error %d.\n", + error)); if (ini_config_error_count(file_ctx)) { INIOUT(printf("Errors detected while parsing: %s\n", @@ -391,10 +395,12 @@ int merge_values_test(void) ini_config_free_errors(error_list); } - if (((mflags[i] != INI_MV1S_ERROR) && (mflags[i]!= INI_MV1S_DETECT)) || + if (((mflags[i] != INI_MV1S_ERROR) && + (mflags[i]!= INI_MV1S_DETECT)) || ((mflags[i] = INI_MV1S_ERROR) && (error != EEXIST)) || ((mflags[i] = INI_MV1S_DETECT) && (error != EEXIST))) { - printf("This is unexpected error %d in mode %d\n", error, mflags[i]); + printf("This is unexpected error %d in mode %d\n", + error, mflags[i]); ini_config_destroy(ini_config); simplebuffer_free(sbobj); ini_config_file_destroy(file_ctx); @@ -448,12 +454,13 @@ int merge_values_test(void) return error; } - sprintf(command,"diff -q %s %s", resname, checkname); + snprintf(command, PATH_MAX * 3, "diff -q %s %s", resname, checkname); error = system(command); INIOUT(printf("Comparison of %s %s returned: %d\n", resname, checkname, error)); if ((error) || (WEXITSTATUS(error))) { - printf("Failed to run copy command %d %d.\n", error, WEXITSTATUS(error)); + printf("Failed to run copy command %d %d.\n", error, + WEXITSTATUS(error)); return -1; } @@ -501,7 +508,7 @@ int merge_section_test(void) char checkname[PATH_MAX]; char resname[PATH_MAX]; char command[PATH_MAX * 3]; - char mode[100]; + char mode[VAL_SIZE]; char *srcdir = NULL; char *builddir = NULL; @@ -510,11 +517,11 @@ int merge_section_test(void) srcdir = getenv("srcdir"); builddir = getenv("builddir"); - sprintf(filename, "%s/ini/ini.d/smerge.conf", + snprintf(filename, PATH_MAX, "%s/ini/ini.d/smerge.conf", (srcdir == NULL) ? "." : srcdir); - sprintf(checkname, "%s/ini/ini.d/sexpect.conf", + snprintf(checkname, PATH_MAX, "%s/ini/ini.d/sexpect.conf", (srcdir == NULL) ? "." : srcdir); - sprintf(resname, "%s/smerge.conf.out", + snprintf(resname, PATH_MAX, "%s/smerge.conf.out", (builddir == NULL) ? "." : builddir); error = simplebuffer_alloc(&sbobj); @@ -529,13 +536,13 @@ int merge_section_test(void) INIOUT(printf("<==== Testing mode %s + %s ====>\n", secmstr[i], mstr[j])); - sprintf(mode, "# Section mode: %s, value mode: %s\n", + snprintf(mode, VAL_SIZE, "# Section mode: %s, value mode: %s\n", secmstr[i], mstr[j]); error = simplebuffer_add_str(sbobj, mode, strlen(mode), - 100); + VAL_SIZE); if (error) { TRACE_ERROR_NUMBER("Failed to add string.", error); @@ -650,13 +657,14 @@ int merge_section_test(void) simplebuffer_free(sbobj); fclose(ff); - sprintf(command,"diff -q %s %s", resname, checkname); + snprintf(command, PATH_MAX * 3, "diff -q %s %s", resname, checkname); error = system(command); INIOUT(printf("Comparison of %s %s returned: %d\n", resname, checkname, error)); if ((error) || (WEXITSTATUS(error))) { - printf("Failed to run diff command %d %d.\n", error, WEXITSTATUS(error)); + printf("Failed to run diff command %d %d.\n", error, + WEXITSTATUS(error)); return -1; } @@ -757,8 +765,8 @@ int merge_file_test(void) char resname[PATH_MAX]; char checkname[PATH_MAX]; char command[PATH_MAX * 3]; - char msg[100]; - char mode[100]; + char msg[VAL_SIZE]; + char mode[VAL_SIZE]; char *srcdir = NULL; char *builddir = NULL; uint32_t collision_flags; @@ -770,16 +778,16 @@ int merge_file_test(void) srcdir = getenv("srcdir"); builddir = getenv("builddir"); - sprintf(firstname, "%s/ini/ini.d/first.conf", + snprintf(firstname, PATH_MAX, "%s/ini/ini.d/first.conf", (srcdir == NULL) ? "." : srcdir); - sprintf(secondname, "%s/ini/ini.d/second.conf", + snprintf(secondname, PATH_MAX, "%s/ini/ini.d/second.conf", (srcdir == NULL) ? "." : srcdir); - sprintf(checkname, "%s/ini/ini.d/mergecheck.conf", + snprintf(checkname, PATH_MAX, "%s/ini/ini.d/mergecheck.conf", (srcdir == NULL) ? "." : srcdir); - sprintf(resname, "%s/mergecheck.conf.out", + snprintf(resname, PATH_MAX, "%s/mergecheck.conf.out", (builddir == NULL) ? "." : builddir); error = simplebuffer_alloc(&sbobj); @@ -794,13 +802,13 @@ int merge_file_test(void) INIOUT(printf("<==== Testing mode %s + %s ====>\n", secmstr[i], mstr[j])); - sprintf(mode, "# Section mode: %s, value mode: %s\n", + snprintf(mode, VAL_SIZE, "# Section mode: %s, value mode: %s\n", secmstr[i], mstr[j]); error = simplebuffer_add_str(sbobj, mode, strlen(mode), - 100); + VAL_SIZE); if (error) { TRACE_ERROR_NUMBER("Failed to add string.", error); @@ -923,7 +931,7 @@ int merge_file_test(void) error = simplebuffer_add_str(sbobj, msg, strlen(msg), - 100); + VAL_SIZE); if (error) { TRACE_ERROR_NUMBER("Failed to add string.", error); @@ -952,7 +960,7 @@ int merge_file_test(void) error = simplebuffer_add_str(sbobj, msg, strlen(msg), - 100); + VAL_SIZE); if (error) { TRACE_ERROR_NUMBER("Failed to add string.", error); @@ -1017,13 +1025,14 @@ int merge_file_test(void) simplebuffer_free(sbobj); fclose(ff); - sprintf(command,"diff -q %s %s", resname, checkname); + snprintf(command,PATH_MAX * 3, "diff -q %s %s", resname, checkname); error = system(command); INIOUT(printf("Comparison of %s %s returned: %d\n", resname, checkname, error)); if ((error) || (WEXITSTATUS(error))) { - printf("Failed to run diff command %d %d.\n", error, WEXITSTATUS(error)); + printf("Failed to run diff command %d %d.\n", error, + WEXITSTATUS(error)); return -1; } @@ -1040,24 +1049,26 @@ int startup_test(void) char **error_list = NULL; char infile[PATH_MAX]; char outfile[PATH_MAX]; - char command[PATH_MAX * 2 + 3]; + char command[PATH_MAX * 3]; char *srcdir = NULL; char *builddir; INIOUT(printf("<==== Startup test ====>\n")); srcdir = getenv("srcdir"); - sprintf(infile, "%s/ini/ini.d/foo.conf.in", (srcdir == NULL) ? "." : srcdir); + snprintf(infile, PATH_MAX, "%s/ini/ini.d/foo.conf.in", + (srcdir == NULL) ? "." : srcdir); builddir = getenv("builddir"); - sprintf(outfile, "%s/foo.conf", + snprintf(outfile, PATH_MAX, "%s/foo.conf", (builddir == NULL) ? "." : builddir); - sprintf(command, "cp %s %s", infile, outfile); + snprintf(command, PATH_MAX * 3, "cp %s %s", infile, outfile); INIOUT(printf("Running command '%s'\n", command)); error = system(command); if ((error) || (WEXITSTATUS(error))) { - printf("Failed to run copy command %d %d.\n", error, WEXITSTATUS(error)); + printf("Failed to run copy command %d %d.\n", error, + WEXITSTATUS(error)); return -1; } @@ -1157,7 +1168,7 @@ int reload_test(void) struct ini_cfgfile *file_ctx_new = NULL; char infile[PATH_MAX]; char outfile[PATH_MAX]; - char command[PATH_MAX * 2 + 3]; + char command[PATH_MAX * 3]; char *srcdir; char *builddir; int changed = 0; @@ -1165,18 +1176,19 @@ int reload_test(void) INIOUT(printf("<==== Reload test ====>\n")); srcdir = getenv("srcdir"); - sprintf(infile, "%s/ini/ini.d/foo.conf.in", + snprintf(infile, PATH_MAX, "%s/ini/ini.d/foo.conf.in", (srcdir == NULL) ? "." : srcdir); builddir = getenv("builddir"); - sprintf(outfile, "%s/foo.conf", + snprintf(outfile, PATH_MAX, "%s/foo.conf", (builddir == NULL) ? "." : builddir); - sprintf(command, "cp %s %s", infile, outfile); + snprintf(command, PATH_MAX * 3, "cp %s %s", infile, outfile); INIOUT(printf("Running command '%s'\n", command)); error = system(command); if ((error) || (WEXITSTATUS(error))) { - printf("Failed to run copy command %d %d.\n", error, WEXITSTATUS(error)); + printf("Failed to run copy command %d %d.\n", error, + WEXITSTATUS(error)); return -1; } @@ -1279,7 +1291,7 @@ int reload_test(void) sleep(1); - sprintf(command, "cp %s %s", infile, outfile); + snprintf(command, PATH_MAX * 3, "cp %s %s", infile, outfile); INIOUT(printf("Copy file again with command '%s'\n", command)); error = system(command); @@ -1389,7 +1401,8 @@ int get_test(void) } srcdir = getenv("srcdir"); - sprintf(infile, "%s/ini/ini.d/real.conf", (srcdir == NULL) ? "." : srcdir); + snprintf(infile, PATH_MAX, "%s/ini/ini.d/real.conf", + (srcdir == NULL) ? "." : srcdir); INIOUT(printf("Reading file %s\n", infile)); diff --git a/ini/ini_valueobj_ut.c b/ini/ini_valueobj_ut.c index eb7937c..7911860 100644 --- a/ini/ini_valueobj_ut.c +++ b/ini/ini_valueobj_ut.c @@ -30,6 +30,8 @@ #define TRACE_HOME #include "trace.h" +#define TEST_SIZE 80 + int verbose = 0; #define VOOUT(foo) \ @@ -47,12 +49,12 @@ static int create_comment(int i, struct ini_comment **ic) { int error = EOK; const char *template = ";Line 0 of the value %d"; - char comment[80]; + char comment[TEST_SIZE]; struct ini_comment *new_ic = NULL; TRACE_FLOW_ENTRY(); - sprintf(comment, template, i); + snprintf(comment, TEST_SIZE, template, i); if ((error = ini_comment_create(&new_ic)) || @@ -579,7 +581,7 @@ int vo_copy_test(void) } /* Replace comment in the value */ - sprintf(comment, ";This is value with boundary %d", wrap); + snprintf(comment, TEST_SIZE, ";This is value with boundary %d", wrap); VOOUT(printf("Comment: %s\n", comment)); error = ini_comment_replace(ic, 1, comment); if (error) { |