static DetectFileMd5Data *DetectFileMd5Parse (char *str)
{
DetectFileMd5Data *filemd5 = NULL;
+ FILE *fp = NULL;
+ char *filename = NULL;
/* We have a correct filemd5 option */
filemd5 = SCMalloc(sizeof(DetectFileMd5Data));
}
/* get full filename */
- char *filename = DetectLoadCompleteSigPath(str);
+ filename = DetectLoadCompleteSigPath(str);
if (filename == NULL) {
goto error;
}
char line[8192] = "";
- FILE *fp = fopen(filename, "r");
+ fp = fopen(filename, "r");
if (fp == NULL) {
SCLogError(SC_ERR_OPENING_RULE_FILE, "opening md5 file %s: %s", filename, strerror(errno));
- return NULL;
+ goto error;
}
int line_no = 0;
}
SCLogInfo("MD5 hash size %u bytes%s", ROHashMemorySize(filemd5->hash), filemd5->negated ? ", negated match" : "");
+ SCFree(filename);
return filemd5;
error:
if (filemd5 != NULL)
DetectFileMd5Free(filemd5);
+ if (fp != NULL)
+ fclose(fp);
+ if (filename != NULL)
+ SCFree(filename);
return NULL;
}