diff --git a/src/detect-dnp3.c b/src/detect-dnp3.c index 3abb0cff94..f70c87f7ff 100644 --- a/src/detect-dnp3.c +++ b/src/detect-dnp3.c @@ -339,35 +339,26 @@ error: */ static int DetectDNP3ObjParse(const char *str, uint8_t *group, uint8_t *var) { - char *groupstr = NULL, *varstr, *sep; - int result = 0; - - groupstr = SCStrdup(str); - if (unlikely(groupstr == NULL)) { - return 0; - } + size_t size = strlen(str) + 1; + char groupstr[size], *varstr, *sep; + strlcpy(groupstr, str, size); sep = strchr(groupstr, ','); if (sep == NULL) { - goto fail; + return 0; } *sep = '\0'; varstr = sep + 1; if (ByteExtractStringUint8(group, 0, strlen(groupstr), groupstr) < 0) { - goto fail; + return 0; } if (ByteExtractStringUint8(var, 0, strlen(varstr), varstr) < 0) { - goto fail; + return 0; } - result = 1; -fail: - if (groupstr == NULL) { - SCFree(groupstr); - } - return result; + return 1; } static int DetectDNP3ObjSetup(DetectEngineCtx *de_ctx, Signature *s, char *str)