From dc008206e346ea339af8a2e3c600eafe98ac187f Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Tue, 5 Apr 2016 13:05:08 +0200 Subject: [PATCH] detect: fix scan-build warning detect-engine-siggroup.c:700:38: warning: Call to 'malloc' has an allocation size of 0 bytes sgh->non_mpm_other_store_array = SCMalloc(non_mpm * sizeof(SignatureNonMpmStore)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./util-mem.h:177:14: note: expanded from macro 'SCMalloc' ptrmem = malloc((a)); \ ^~~~~~~~~~~ 1 warning generated. --- src/detect-engine-siggroup.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/detect-engine-siggroup.c b/src/detect-engine-siggroup.c index 6021769083..b3b40ab127 100644 --- a/src/detect-engine-siggroup.c +++ b/src/detect-engine-siggroup.c @@ -697,13 +697,17 @@ int SigGroupHeadBuildNonMpmArray(DetectEngineCtx *de_ctx, SigGroupHead *sgh) return 0; } - sgh->non_mpm_other_store_array = SCMalloc(non_mpm * sizeof(SignatureNonMpmStore)); - BUG_ON(sgh->non_mpm_other_store_array == NULL); - memset(sgh->non_mpm_other_store_array, 0, non_mpm * sizeof(SignatureNonMpmStore)); + if (non_mpm > 0) { + sgh->non_mpm_other_store_array = SCMalloc(non_mpm * sizeof(SignatureNonMpmStore)); + BUG_ON(sgh->non_mpm_other_store_array == NULL); + memset(sgh->non_mpm_other_store_array, 0, non_mpm * sizeof(SignatureNonMpmStore)); + } - sgh->non_mpm_syn_store_array = SCMalloc(non_mpm_syn * sizeof(SignatureNonMpmStore)); - BUG_ON(sgh->non_mpm_syn_store_array == NULL); - memset(sgh->non_mpm_syn_store_array, 0, non_mpm_syn * sizeof(SignatureNonMpmStore)); + if (non_mpm_syn > 0) { + sgh->non_mpm_syn_store_array = SCMalloc(non_mpm_syn * sizeof(SignatureNonMpmStore)); + BUG_ON(sgh->non_mpm_syn_store_array == NULL); + memset(sgh->non_mpm_syn_store_array, 0, non_mpm_syn * sizeof(SignatureNonMpmStore)); + } for (sig = 0; sig < sgh->sig_cnt; sig++) { s = sgh->match_array[sig]; @@ -713,12 +717,14 @@ int SigGroupHeadBuildNonMpmArray(DetectEngineCtx *de_ctx, SigGroupHead *sgh) if (s->mpm_sm == NULL || (s->flags & SIG_FLAG_MPM_NEG)) { if (!(DetectFlagsSignatureNeedsSynPackets(s))) { BUG_ON(sgh->non_mpm_other_store_cnt >= non_mpm); + BUG_ON(sgh->non_mpm_other_store_array == NULL); sgh->non_mpm_other_store_array[sgh->non_mpm_other_store_cnt].id = s->num; sgh->non_mpm_other_store_array[sgh->non_mpm_other_store_cnt].mask = s->mask; sgh->non_mpm_other_store_cnt++; } BUG_ON(sgh->non_mpm_syn_store_cnt >= non_mpm_syn); + BUG_ON(sgh->non_mpm_syn_store_array == NULL); sgh->non_mpm_syn_store_array[sgh->non_mpm_syn_store_cnt].id = s->num; sgh->non_mpm_syn_store_array[sgh->non_mpm_syn_store_cnt].mask = s->mask; sgh->non_mpm_syn_store_cnt++;