*/
static int IPOnlyCIDRItemParseSingle(IPOnlyCIDRItem *dd, char *str)
{
- char *ip = NULL;
- char *ip2 = NULL;
+ char buf[256] = "";
+ char *ip = NULL, *ip2 = NULL;
char *mask = NULL;
int r = 0;
while (*str != '\0' && *str == ' ')
str++;
- char *ipdup = SCStrdup(str);
-
- if (unlikely(ipdup == NULL))
- return -1;
SCLogDebug("str %s", str);
+ strlcpy(buf, str, sizeof(buf));
+ ip = buf;
/* first handle 'any' */
if (strcasecmp(str, "any") == 0) {
IPOnlyCIDRItemParseSingle(dd->next, "::/0");
BUG_ON(dd->family == 0);
- SCFree(ipdup);
-
SCLogDebug("address is \'any\'");
return 0;
}
- /* we dup so we can put a nul-termination in it later */
- ip = ipdup;
-
/* handle the negation case */
if (ip[0] == '!') {
dd->negated = (dd->negated)? 0 : 1;
}
- SCFree(ipdup);
-
BUG_ON(dd->family == 0);
return 0;
error:
- if (ipdup)
- SCFree(ipdup);
return -1;
}