Properly check retval for config and conversion function calls.

remotes/origin/master-1.0.x
Victor Julien 15 years ago
parent e93505d8e3
commit aa97ad6ceb

@ -179,7 +179,11 @@ DetectFragOffsetData *DetectFragOffsetParse (char *fragoffsetstr) {
}
}
ByteExtractStringUint16(&fragoff->frag_off, 10, 0, substr[1]);
if (ByteExtractStringUint16(&fragoff->frag_off, 10, 0, substr[1]) < 0) {
SCLogError(SC_ERR_INVALID_ARGUMENT, "specified frag offset %s is not "
"valid", substr[1]);
goto error;
}
for (i = 0; i < 3; i++) {
if (substr[i] != NULL) SCFree(substr[i]);

@ -185,7 +185,11 @@ DetectIcmpIdData *DetectIcmpIdParse (char *icmpidstr) {
/** \todo can ByteExtractStringUint16 do this? */
uint16_t id = 0;
ByteExtractStringUint16(&id, 10, 0, substr[1]);
if (ByteExtractStringUint16(&id, 10, 0, substr[1]) < 0) {
SCLogError(SC_ERR_INVALID_ARGUMENT, "specified icmp id %s is not "
"valid", substr[1]);
goto error;
}
iid->id = htons(id);
for (i = 0; i < 3; i++) {

@ -185,7 +185,11 @@ DetectIcmpSeqData *DetectIcmpSeqParse (char *icmpseqstr) {
}
uint16_t seq = 0;
ByteExtractStringUint16(&seq, 10, 0, substr[1]);
if (ByteExtractStringUint16(&seq, 10, 0, substr[1]) < 0) {
SCLogError(SC_ERR_INVALID_ARGUMENT, "specified icmp seq %s is not "
"valid", substr[1]);
goto error;
}
iseq->seq = htons(seq);
for (i = 0; i < 3; i++) {

@ -618,7 +618,8 @@ static int SigParseOptions(DetectEngineCtx *de_ctx, Signature *s, char *optstr)
/* extract the substrings */
for (i = 1; i <= ret-1; i++) {
pcre_get_substring(optstr, ov, MAX_SUBSTRINGS, i, &arr[i-1]);
if (pcre_get_substring(optstr, ov, MAX_SUBSTRINGS, i, &arr[i-1]) < 0)
goto error;
//printf("SigParseOptions: arr[%" PRId32 "] = \"%s\"\n", i-1, arr[i-1]);
}
arr[i-1]=NULL;
@ -868,7 +869,9 @@ int SigParseBasics(Signature *s, char *sigstr, char ***result, uint8_t addrs_dir
}
for (i = 1; i <= ret - 1; i++) {
pcre_get_substring(sigstr, ov, MAX_SUBSTRINGS, i, &arr[i - 1]);
if (pcre_get_substring(sigstr, ov, MAX_SUBSTRINGS, i, &arr[i - 1]) < 0 ) {
goto error;
}
//printf("SigParseBasics: arr[%" PRId32 "] = \"%s\"\n", i-1, arr[i-1]);
}
arr[i - 1] = NULL;

@ -140,9 +140,11 @@ int SCClassConfInitContext(DetectEngineCtx *de_ctx)
*/
static char *SCClassConfGetConfFilename(void)
{
char *log_filename = (char *)default_file_path;
char *log_filename = NULL;
ConfGet("classification-file", &log_filename);
if (ConfGet("classification-file", &log_filename) != 1) {
log_filename = (char *)default_file_path;
}
return log_filename;
}

@ -68,9 +68,11 @@ static pcre_extra *rate_regex_study = NULL;
*/
char *SCThresholdConfGetConfFilename(void)
{
char *log_filename = (char *)THRESHOLD_CONF_DEF_CONF_FILEPATH;
char *log_filename = NULL;
ConfGet("threshold-file", &log_filename);
if (ConfGet("threshold-file", &log_filename) != 1) {
log_filename = (char *)THRESHOLD_CONF_DEF_CONF_FILEPATH;
}
return log_filename;
}

Loading…
Cancel
Save