]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
cppcheck: work around snprintf warning 1937/head
authorVictor Julien <victor@inliniac.net>
Mon, 7 Mar 2016 15:55:09 +0000 (16:55 +0100)
committerVictor Julien <victor@inliniac.net>
Tue, 15 Mar 2016 12:30:52 +0000 (13:30 +0100)
Cppcheck 1.72 gives a warning on the following code pattern:

    char blah[32] = "";
    snprintf(blah, sizeof(blah), "something");

The warning is:

    (error) Buffer is accessed out of bounds.

While this appears to be a FP, in most cases the initialization to ""
was unnecessary as the snprintf statement immediately follows the
variable declaration.

13 files changed:
src/detect-engine-loader.c
src/detect-engine.c
src/detect.c
src/flow-manager.c
src/log-tcp-data.c
src/output-json-flow.c
src/output-json-netflow.c
src/runmode-unix-socket.c
src/util-classification-config.c
src/util-debug.h
src/util-reference-config.c
src/util-rule-vars.c
src/util-threshold-config.c

index b360cd0406b3f0e4678d8c5bccb3d7535de3f6dc..c3a79b5cbe1478600b0249c4fc4d8206221bf21b 100644 (file)
@@ -267,7 +267,7 @@ void DetectLoaderThreadSpawn()
     for (i = 0; i < num_loaders; i++) {
         ThreadVars *tv_loader = NULL;
 
-        char name[32] = "";
+        char name[32];
         snprintf(name, sizeof(name), "DetectLoader%02d", i+1);
 
         tv_loader = TmThreadCreateCmdThreadByName("DetectLoader",
index 97032f260738bf79908f818c89422f545f8b9cf6..492f2f108746cbf095d6b23fd2d9ccffb3671d13 100644 (file)
@@ -2524,7 +2524,9 @@ int DetectEngineReload(const char *filename, SCInstance *suri)
     DetectEngineCtx *new_de_ctx = NULL;
     DetectEngineCtx *old_de_ctx = NULL;
 
-    char prefix[128] = "";
+    char prefix[128];
+    memset(prefix, 0, sizeof(prefix));
+
     if (filename != NULL) {
         snprintf(prefix, sizeof(prefix), "detect-engine-reloads.%d", reloads++);
         if (ConfYamlLoadFileWithPrefix(filename, prefix) != 0) {
index 74a1b8a927c451bb2bd8ceab87ba7efda22a1852..3626d2e21330da1c73c277c241d74f79e481d643 100644 (file)
@@ -254,11 +254,13 @@ char *DetectLoadCompleteSigPath(const DetectEngineCtx *de_ctx, char *sig_file)
 {
     char *defaultpath = NULL;
     char *path = NULL;
-    char varname[128] = "default-rule-path";
+    char varname[128];
 
     if (strlen(de_ctx->config_prefix) > 0) {
         snprintf(varname, sizeof(varname), "%s.default-rule-path",
                 de_ctx->config_prefix);
+    } else {
+        snprintf(varname, sizeof(varname), "default-rule-path");
     }
 
     /* Path not specified */
index 15ad6162a0f132ce8fdd76c497c8526824bdb2ff..6bc10ba4ccf8cae184cba2823abf3bb5f57c4235 100644 (file)
@@ -728,7 +728,7 @@ void FlowManagerThreadSpawn()
     for (u = 0; u < flowmgr_number; u++) {
         ThreadVars *tv_flowmgr = NULL;
 
-        char name[32] = "";
+        char name[32];
         snprintf(name, sizeof(name), "FlowManagerThread%02u", u+1);
 
         tv_flowmgr = TmThreadCreateMgmtThreadByName("FlowManagerThread",
@@ -888,7 +888,7 @@ void FlowRecyclerThreadSpawn()
     for (u = 0; u < flowrec_number; u++) {
         ThreadVars *tv_flowmgr = NULL;
 
-        char name[32] = "";
+        char name[32];
         snprintf(name, sizeof(name), "FlowRecyclerThread%02u", u+1);
 
         tv_flowmgr = TmThreadCreateMgmtThreadByName("FlowRecyclerThread",
index c41dd4c238c360f4175c0a8f7a31d973a69ea142..0cf2f225f392fe8a5091178c85f752396d7babb9 100644 (file)
@@ -112,9 +112,10 @@ static int LogTcpDataLoggerDir(ThreadVars *tv, void *thread_data, const Flow *f,
 
         char name[PATH_MAX];
 
-        char tx[64] = "";
-        if (flags & OUTPUT_STREAMING_FLAG_TRANSACTION)
+        char tx[64] = { 0 };
+        if (flags & OUTPUT_STREAMING_FLAG_TRANSACTION) {
             snprintf(tx, sizeof(tx), "%"PRIu64, tx_id);
+        }
 
         snprintf(name, sizeof(name), "%s/%s/%s_%u-%s_%u-%s-%s.data",
                 td->log_dir,
index b59cf4f63b467ae1cd983c8fc4d48cc529cddc86..0a385d81969e45045ae9c39d802432db340b1df6 100644 (file)
@@ -246,7 +246,7 @@ static void JsonFlowLogJSON(JsonFlowLogThread *aft, json_t *js, Flow *f)
 
         TcpSession *ssn = f->protoctx;
 
-        char hexflags[3] = "";
+        char hexflags[3];
         snprintf(hexflags, sizeof(hexflags), "%02x",
                 ssn ? ssn->tcp_packet_flags : 0);
         json_object_set_new(tjs, "tcp_flags", json_string(hexflags));
index a55bc8cf4eaf8c48f24c15f20a97a8bab8277a03..4065a535a0dd1c6fc38e8e17dba5552ec4697f59 100644 (file)
@@ -224,7 +224,7 @@ static void JsonNetFlowLogJSONToServer(JsonNetFlowLogThread *aft, json_t *js, Fl
 
         TcpSession *ssn = f->protoctx;
 
-        char hexflags[3] = "";
+        char hexflags[3];
         snprintf(hexflags, sizeof(hexflags), "%02x",
                 ssn ? ssn->client.tcp_flags : 0);
         json_object_set_new(tjs, "tcp_flags", json_string(hexflags));
@@ -273,7 +273,7 @@ static void JsonNetFlowLogJSONToClient(JsonNetFlowLogThread *aft, json_t *js, Fl
 
         TcpSession *ssn = f->protoctx;
 
-        char hexflags[3] = "";
+        char hexflags[3];
         snprintf(hexflags, sizeof(hexflags), "%02x",
                 ssn ? ssn->server.tcp_flags : 0);
         json_object_set_new(tjs, "tcp_flags", json_string(hexflags));
index 46aa3100a64fb44cb44950168318881f87715996..09edb610d8e6817d682f1627655c1ad874b1e4a0 100644 (file)
@@ -360,7 +360,7 @@ TmEcode UnixSocketPcapFilesCheck(void *data)
             }
         }
         if (cfile->tenant_id > 0) {
-            char tstr[16] = "";
+            char tstr[16];
             snprintf(tstr, sizeof(tstr), "%d", cfile->tenant_id);
             if (ConfSet("pcap-file.tenant-id", tstr) != 1) {
                 SCLogError(SC_ERR_INVALID_ARGUMENTS,
index e88d4f20c58fc35dd2b49f23d7be6f29fc839b87..babddae3f5108f14fd3bc11c10fe9fc4e3592446 100644 (file)
@@ -163,9 +163,9 @@ FILE *SCClassConfInitContextAndLocalResources(DetectEngineCtx *de_ctx, FILE *fd)
 static char *SCClassConfGetConfFilename(const DetectEngineCtx *de_ctx)
 {
     char *log_filename = NULL;
-    char config_value[256] = "";
 
     if (de_ctx != NULL && strlen(de_ctx->config_prefix) > 0) {
+        char config_value[256];
         snprintf(config_value, sizeof(config_value),
                  "%s.classification-file", de_ctx->config_prefix);
 
index 9c9d2e23eed311a9393ff3d16e5f819e8bfe9efc..7e52506b5aa3b90daf05d81d20ca80cb521d8a0f 100644 (file)
@@ -198,7 +198,6 @@ extern int sc_log_module_initialized;
 
 extern int sc_log_module_cleaned;
 
-
 #define SCLog(x, ...)                                                           \
     do {                                                                        \
         if (sc_log_global_log_level >= x &&                                     \
@@ -208,7 +207,7 @@ extern int sc_log_module_cleaned;
                (sc_log_fd_filters_present == 0 ||                               \
                 SCLogMatchFDFilter(__FUNCTION__) == 1))                         \
         {                                                                       \
-            char _sc_log_msg[SC_LOG_MAX_LOG_MSG_LEN] = "";                      \
+            char _sc_log_msg[SC_LOG_MAX_LOG_MSG_LEN];                           \
                                                                                 \
             snprintf(_sc_log_msg, SC_LOG_MAX_LOG_MSG_LEN, __VA_ARGS__);         \
                                                                                 \
@@ -228,7 +227,7 @@ extern int sc_log_module_cleaned;
                (sc_log_fd_filters_present == 0 ||                               \
                 SCLogMatchFDFilter(__FUNCTION__) == 1))                         \
         {                                                                       \
-            char _sc_log_msg[SC_LOG_MAX_LOG_MSG_LEN] = "";                      \
+            char _sc_log_msg[SC_LOG_MAX_LOG_MSG_LEN];                           \
                                                                                 \
             snprintf(_sc_log_msg, SC_LOG_MAX_LOG_MSG_LEN, __VA_ARGS__);         \
                                                                                 \
index 299897ab35a254a96e673f8e8be31576a08c543e..249293e9eb877700c523169e5fb882152fe959ef 100644 (file)
@@ -162,9 +162,9 @@ static FILE *SCRConfInitContextAndLocalResources(DetectEngineCtx *de_ctx, FILE *
 static char *SCRConfGetConfFilename(const DetectEngineCtx *de_ctx)
 {
     char *path = NULL;
-    char config_value[256] = "";
 
     if (de_ctx != NULL && strlen(de_ctx->config_prefix) > 0) {
+        char config_value[256];
         snprintf(config_value, sizeof(config_value),
                  "%s.reference-config-file", de_ctx->config_prefix);
 
index 57347f4ff84939ee48fd343e1b15ec90c3536e76..2edb23e9c8cd18a496bc547a27666737139a8d6d 100644 (file)
@@ -69,7 +69,7 @@ char *SCRuleVarsGetConfVar(const DetectEngineCtx *de_ctx,
     SCEnter();
 
     const char *conf_var_type_name = NULL;
-    char conf_var_full_name[2048] = "";
+    char conf_var_full_name[2048];
     char *conf_var_full_name_value = NULL;
 
     if (conf_var_name == NULL)
index 6698b16fa6db7421ffa1f5b7900ae3fa4e9da103..f2f5ad3afe719f33b4f0fe34a9a54f9de73f350d 100644 (file)
@@ -106,9 +106,9 @@ static pcre_extra *regex_suppress_study = NULL;
 static char *SCThresholdConfGetConfFilename(const DetectEngineCtx *de_ctx)
 {
     char *log_filename = NULL;
-    char config_value[256] = "";
 
     if (de_ctx != NULL && strlen(de_ctx->config_prefix) > 0) {
+        char config_value[256];
         snprintf(config_value, sizeof(config_value),
                  "%s.threshold-file", de_ctx->config_prefix);