From: Bram Moolenaar Date: Fri, 14 Dec 2018 18:20:02 +0000 (+0100) Subject: patch 8.1.0587: GvimExt: realloc() failing is not handled properly X-Git-Tag: v8.1.0587 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=06d4c4c818fe4258bdc3d455b7680fabadd719e4;p=vim patch 8.1.0587: GvimExt: realloc() failing is not handled properly Problem: GvimExt: realloc() failing is not handled properly. Solution: Check for NULL return. (Jan-Jaap Korpershoek, closes #3689) --- diff --git a/src/GvimExt/gvimext.cpp b/src/GvimExt/gvimext.cpp index 64c5d1339..62d925b8a 100644 --- a/src/GvimExt/gvimext.cpp +++ b/src/GvimExt/gvimext.cpp @@ -1024,6 +1024,8 @@ STDMETHODIMP CShellExt::InvokeSingleGvim(HWND hParent, cmdlen = BUFSIZE; cmdStrW = (wchar_t *) malloc(cmdlen * sizeof(wchar_t)); + if (cmdStrW == NULL) + return; getGvimInvocationW(cmdStrW); if (useDiff) @@ -1039,7 +1041,10 @@ STDMETHODIMP CShellExt::InvokeSingleGvim(HWND hParent, if (len > cmdlen) { cmdlen = len + BUFSIZE; - cmdStrW = (wchar_t *)realloc(cmdStrW, cmdlen * sizeof(wchar_t)); + wchar_t *cmdStrW_new = (wchar_t *)realloc(cmdStrW, cmdlen * sizeof(wchar_t)); + if (cmdStrW_new == NULL) + goto theend; + cmdStrW = cmdStrW_new; } wcscat(cmdStrW, L" \""); wcscat(cmdStrW, m_szFileUserClickedOn); @@ -1076,7 +1081,7 @@ STDMETHODIMP CShellExt::InvokeSingleGvim(HWND hParent, CloseHandle(pi.hProcess); CloseHandle(pi.hThread); } - +theend: free(cmdStrW); return NOERROR; diff --git a/src/version.c b/src/version.c index 9e3f7208a..cc609967a 100644 --- a/src/version.c +++ b/src/version.c @@ -799,6 +799,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 587, /**/ 586, /**/