dce_opnum: improve memory handling on parsing error

pull/1562/head
Victor Julien 10 years ago
parent b3b7625be5
commit a5168d5977

@ -182,6 +182,13 @@ static inline DetectDceOpnumData *DetectDceOpnumArgParse(const char *arg)
dor = DetectDceOpnumAllocDetectDceOpnumRange(); dor = DetectDceOpnumAllocDetectDceOpnumRange();
if (dor == NULL) if (dor == NULL)
goto error; goto error;
if (prev_dor == NULL) {
prev_dor = dor;
dod->range = dor;
} else {
prev_dor->next = dor;
prev_dor = dor;
}
if ((hyphen_token = index(dup_str_temp, '-')) != NULL) { if ((hyphen_token = index(dup_str_temp, '-')) != NULL) {
hyphen_token[0] = '\0'; hyphen_token[0] = '\0';
@ -199,20 +206,17 @@ static inline DetectDceOpnumData *DetectDceOpnumArgParse(const char *arg)
if (dor->range1 > DCE_OPNUM_RANGE_MAX) if (dor->range1 > DCE_OPNUM_RANGE_MAX)
goto error; goto error;
if (prev_dor == NULL) {
prev_dor = dor;
dod->range = dor;
} else {
prev_dor->next = dor;
prev_dor = dor;
}
dup_str_temp = dup_str; dup_str_temp = dup_str;
} }
dor = DetectDceOpnumAllocDetectDceOpnumRange(); dor = DetectDceOpnumAllocDetectDceOpnumRange();
if (dor == NULL) if (dor == NULL)
goto error; goto error;
if (prev_dor == NULL) {
dod->range = dor;
} else {
prev_dor->next = dor;
}
if ( (hyphen_token = index(dup_str, '-')) != NULL) { if ( (hyphen_token = index(dup_str, '-')) != NULL) {
hyphen_token[0] = '\0'; hyphen_token[0] = '\0';
@ -230,12 +234,6 @@ static inline DetectDceOpnumData *DetectDceOpnumArgParse(const char *arg)
if (dor->range1 > DCE_OPNUM_RANGE_MAX) if (dor->range1 > DCE_OPNUM_RANGE_MAX)
goto error; goto error;
if (prev_dor == NULL) {
dod->range = dor;
} else {
prev_dor->next = dor;
}
if (dup_str_head != NULL) if (dup_str_head != NULL)
SCFree(dup_str_head); SCFree(dup_str_head);

Loading…
Cancel
Save