# HG changeset patch # User Bram Moolenaar # Date 1544812207 -3600 # Node ID eb0d8065d3f814cf8f7c32a91f5caf80050f8653 # Parent e93f2f958e5e13b6ac0d05daf77823d62b69b078 patch 8.1.0587: GvimExt: realloc() failing is not handled properly commit https://github.com/vim/vim/commit/06d4c4c818fe4258bdc3d455b7680fabadd719e4 Author: Bram Moolenaar Date: Fri Dec 14 19:20:02 2018 +0100 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 https://github.com/vim/vim/issues/3689) diff --git a/src/GvimExt/gvimext.cpp b/src/GvimExt/gvimext.cpp --- a/src/GvimExt/gvimext.cpp +++ b/src/GvimExt/gvimext.cpp @@ -1024,6 +1024,8 @@ STDMETHODIMP CShellExt::InvokeSingleGvim 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 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 CloseHandle(pi.hProcess); CloseHandle(pi.hThread); } - +theend: free(cmdStrW); return NOERROR; diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -800,6 +800,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 587, +/**/ 586, /**/ 585,