summaryrefslogtreecommitdiffstats
path: root/src/detect-engine-address.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/detect-engine-address.c')
-rw-r--r--src/detect-engine-address.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/detect-engine-address.c b/src/detect-engine-address.c
index ac10e14..191e8f5 100644
--- a/src/detect-engine-address.c
+++ b/src/detect-engine-address.c
@@ -1362,23 +1362,28 @@ void DetectAddressMapFree(DetectEngineCtx *de_ctx)
return;
}
-static int DetectAddressMapAdd(DetectEngineCtx *de_ctx, const char *string,
- DetectAddressHead *address, bool contains_negation)
+static bool DetectAddressMapAdd(DetectEngineCtx *de_ctx, const char *string,
+ DetectAddressHead *address, bool contains_negation)
{
DetectAddressMap *map = SCCalloc(1, sizeof(*map));
if (map == NULL)
- return -1;
+ return false;
map->string = SCStrdup(string);
if (map->string == NULL) {
SCFree(map);
- return -1;
+ return false;
}
map->address = address;
map->contains_negation = contains_negation;
- BUG_ON(HashListTableAdd(de_ctx->address_table, (void *)map, 0) != 0);
- return 0;
+ if (HashListTableAdd(de_ctx->address_table, map, 0) != 0) {
+ SCFree(map->string);
+ SCFree(map);
+ return false;
+ }
+
+ return true;
}
static const DetectAddressMap *DetectAddressMapLookup(DetectEngineCtx *de_ctx,
@@ -1471,8 +1476,11 @@ const DetectAddressHead *DetectParseAddress(DetectEngineCtx *de_ctx,
*contains_negation = false;
}
- DetectAddressMapAdd((DetectEngineCtx *)de_ctx, string, head,
- *contains_negation);
+ if (!DetectAddressMapAdd((DetectEngineCtx *)de_ctx, string, head, *contains_negation)) {
+ DetectAddressHeadFree(head);
+ return NULL;
+ }
+
return head;
}