From 214d750e975aa55612479165a56a95eb15e74c48 Mon Sep 17 00:00:00 2001 From: Kevin Lin Date: Fri, 4 Sep 2015 12:26:20 -0400 Subject: [PATCH] cid 12208 & 12230 - fix for readdb failure state; silence warning --- libclamav/readdb.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libclamav/readdb.c b/libclamav/readdb.c index 7a36f8ed2..60a8cb9f2 100644 --- a/libclamav/readdb.c +++ b/libclamav/readdb.c @@ -373,12 +373,14 @@ int cli_parse_add(struct cli_matcher *root, const char *virname, const char *hex /* get pcre-ed */ if (start == end) { cli_errmsg("cli_parseadd(): PCRE subsig mismatched '/' delimiter\n"); + free(hexcpy); return CL_EMALFDB; } #if HAVE_PCRE /* get checked */ if (hexsig[0] == '/') { cli_errmsg("cli_parseadd(): PCRE subsig must contain logical trigger\n"); + free(hexcpy); return CL_EMALFDB; } @@ -3261,11 +3263,14 @@ static int yara_subhex_verify(const char *hexstr, const char *end, size_t *maxsu cli_warnmsg("load_oneyara[verify]: string has unbounded wildcard on single byte subsequence\n"); return CL_EMALFDB; } + if (maxsublen && (sublen > *maxsublen)) + *maxsublen = sublen; + sublen = 0; + break; case '?': - if (*track == '?') - hexbyte = !hexbyte; if (maxsublen && (sublen > *maxsublen)) *maxsublen = sublen; + hexbyte = !hexbyte; sublen = 0; break; case '[':