From: Victor Julien Date: Mon, 7 Mar 2016 15:55:09 +0000 (+0100) Subject: cppcheck: work around snprintf warning X-Git-Tag: suricata-3.0.1RC1~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8394b38941492b7264e26c14b8fa435c859d2497;p=thirdparty%2Fsuricata.git cppcheck: work around snprintf warning 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. --- diff --git a/src/detect-engine-loader.c b/src/detect-engine-loader.c index b360cd0406..c3a79b5cbe 100644 --- a/src/detect-engine-loader.c +++ b/src/detect-engine-loader.c @@ -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", diff --git a/src/detect-engine.c b/src/detect-engine.c index 97032f2607..492f2f1087 100644 --- a/src/detect-engine.c +++ b/src/detect-engine.c @@ -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) { diff --git a/src/detect.c b/src/detect.c index 74a1b8a927..3626d2e213 100644 --- a/src/detect.c +++ b/src/detect.c @@ -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 */ diff --git a/src/flow-manager.c b/src/flow-manager.c index 15ad6162a0..6bc10ba4cc 100644 --- a/src/flow-manager.c +++ b/src/flow-manager.c @@ -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", diff --git a/src/log-tcp-data.c b/src/log-tcp-data.c index c41dd4c238..0cf2f225f3 100644 --- a/src/log-tcp-data.c +++ b/src/log-tcp-data.c @@ -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, diff --git a/src/output-json-flow.c b/src/output-json-flow.c index b59cf4f63b..0a385d8196 100644 --- a/src/output-json-flow.c +++ b/src/output-json-flow.c @@ -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)); diff --git a/src/output-json-netflow.c b/src/output-json-netflow.c index a55bc8cf4e..4065a535a0 100644 --- a/src/output-json-netflow.c +++ b/src/output-json-netflow.c @@ -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)); diff --git a/src/runmode-unix-socket.c b/src/runmode-unix-socket.c index 46aa3100a6..09edb610d8 100644 --- a/src/runmode-unix-socket.c +++ b/src/runmode-unix-socket.c @@ -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, diff --git a/src/util-classification-config.c b/src/util-classification-config.c index e88d4f20c5..babddae3f5 100644 --- a/src/util-classification-config.c +++ b/src/util-classification-config.c @@ -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); diff --git a/src/util-debug.h b/src/util-debug.h index 9c9d2e23ee..7e52506b5a 100644 --- a/src/util-debug.h +++ b/src/util-debug.h @@ -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__); \ \ diff --git a/src/util-reference-config.c b/src/util-reference-config.c index 299897ab35..249293e9eb 100644 --- a/src/util-reference-config.c +++ b/src/util-reference-config.c @@ -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); diff --git a/src/util-rule-vars.c b/src/util-rule-vars.c index 57347f4ff8..2edb23e9c8 100644 --- a/src/util-rule-vars.c +++ b/src/util-rule-vars.c @@ -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) diff --git a/src/util-threshold-config.c b/src/util-threshold-config.c index 6698b16fa6..f2f5ad3afe 100644 --- a/src/util-threshold-config.c +++ b/src/util-threshold-config.c @@ -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);