From d53b6a9132f2ed7ca86d329ce434770df019f960 Mon Sep 17 00:00:00 2001 From: toddouska Date: Fri, 23 Oct 2015 16:19:26 -0700 Subject: [PATCH] handle sniffer realloc failure w/o leak --- src/sniffer.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/sniffer.c b/src/sniffer.c index a304e49c7..cd33c738f 100644 --- a/src/sniffer.c +++ b/src/sniffer.c @@ -3077,12 +3077,16 @@ doPart: ret = ssl->buffers.clearOutputBuffer.length; TraceGotData(ret); if (ret) { /* may be blank message */ - *data = realloc(*data, decoded + ret); - if (*data == NULL) { + byte* tmpData; /* don't leak on realloc free */ + tmpData = (byte*)realloc(*data, decoded + ret); + if (tmpData == NULL) { + free(*data); + *data = NULL; SetError(MEMORY_STR, error, session, FATAL_ERROR_STATE); return -1; } + *data = tmpData; XMEMCPY(*data + decoded, ssl->buffers.clearOutputBuffer.buffer, ret); TraceAddedData(ret, decoded);