detect: create more strict rule validation

Don't allow control characters other than LF, CR, TAB.
pull/9224/head
Victor Julien 2 years ago
parent a1401ab81b
commit 7d0851b0c2

@ -1320,6 +1320,22 @@ error:
return -1; return -1;
} }
static inline bool CheckAscii(const char *str)
{
for (size_t i = 0; i < strlen(str); i++) {
if (str[i] < 0x20) {
// LF CR TAB
if (str[i] == 0x0a || str[i] == 0x0d || str[i] == 0x09) {
continue;
}
return false;
} else if (str[i] == 0x7f) {
return false;
}
}
return true;
}
/** /**
* \brief parse a signature * \brief parse a signature
* *
@ -1341,6 +1357,11 @@ static int SigParse(DetectEngineCtx *de_ctx, Signature *s,
SCReturnInt(-1); SCReturnInt(-1);
} }
if (!CheckAscii(sigstr)) {
SCLogError("rule contains invalid (control) characters");
SCReturnInt(-1);
}
s->sig_str = SCStrdup(sigstr); s->sig_str = SCStrdup(sigstr);
if (unlikely(s->sig_str == NULL)) { if (unlikely(s->sig_str == NULL)) {
SCReturnInt(-1); SCReturnInt(-1);

Loading…
Cancel
Save