win32: plug memory leak on realloc() failure in syslog()
authorRené Scharfe <l.s.r@web.de>
Thu, 10 Aug 2017 10:23:45 +0000 (12:23 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 10 Aug 2017 20:57:52 +0000 (13:57 -0700)
If realloc() fails then the original buffer is still valid. Free it
before exiting the function.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
compat/win32/syslog.c
index 6c7c9b60538d932d6dbc2d32774a6f64f8687c69..161978d720aed9db5a00c77d1c6bd9a073544f15 100644 (file)
@@ -43,8 +43,10 @@ void syslog(int priority, const char *fmt, ...)
        va_end(ap);
 
        while ((pos = strstr(str, "%1")) != NULL) {
+               char *oldstr = str;
                str = realloc(str, st_add(++str_len, 1));
                if (!str) {
+                       free(oldstr);
                        warning_errno("realloc failed");
                        return;
                }