Improve memory handling and parsing of the msg rule keyword.

remotes/origin/master-1.0.x
Victor Julien 18 years ago
parent eb1c4e4987
commit 9e5049cddc

@ -17,18 +17,24 @@ void DetectMsgRegister (void) {
int DetectMsgSetup (Signature *s, SigMatch *m, char *msgstr) int DetectMsgSetup (Signature *s, SigMatch *m, char *msgstr)
{ {
char *str = msgstr; char *str = msgstr;
char dubbed = 0;
/* strip "'s */ /* strip "'s */
if (msgstr[0] == '\"' && msgstr[strlen(msgstr)-1] == '\"') { if (msgstr[0] == '\"' && msgstr[strlen(msgstr)-1] == '\"') {
str = strdup(msgstr+1); str = strdup(msgstr+1);
str[strlen(msgstr)-2] = '\0'; str[strlen(msgstr)-2] = '\0';
dubbed = 1; } else if (msgstr[1] == '\"' && msgstr[strlen(msgstr)-1] == '\"') {
/* XXX do this parsing in a better way */
str = strdup(msgstr+2);
str[strlen(msgstr)-3] = '\0';
//printf("DetectMsgSetup: format hack applied: \'%s\'\n", str);
} else {
printf("DetectMsgSetup: format error \'%s\'\n", msgstr);
return -1;
} }
s->msg = strdup(str); s->msg = strdup(str);
if (dubbed) free(str); free(str);
return 0; return 0;
} }

Loading…
Cancel
Save