summaryrefslogtreecommitdiff
path: root/libraries/base/cbits/Win32Utils.c
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2022-01-14 19:47:21 -0500
committerBen Gamari <ben@smart-cactus.org>2022-01-14 19:47:21 -0500
commitfbe48364fc4839fbff6c9db39cec2da56273bf63 (patch)
tree0ffaaaef2d29fdc9b354aca99134339b8d920d98 /libraries/base/cbits/Win32Utils.c
parent83645d0f3599deeca9397d2fe4a1347bf4cd3b1d (diff)
parenta82a678b098268465e4a94140e3431ee580f0edd (diff)
downloadhaskell-wip/winio-by-default.tar.gz
Merge branch 'Phyx/ghc-gh-18382-fix-heap-corruption' into wip/winio-by-defaultwip/winio-by-default
Diffstat (limited to 'libraries/base/cbits/Win32Utils.c')
-rw-r--r--libraries/base/cbits/Win32Utils.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libraries/base/cbits/Win32Utils.c b/libraries/base/cbits/Win32Utils.c
index f3dec0d98d..69d30339ba 100644
--- a/libraries/base/cbits/Win32Utils.c
+++ b/libraries/base/cbits/Win32Utils.c
@@ -183,10 +183,9 @@ bool __createUUIDTempFileErrNo (wchar_t* pathName, wchar_t* prefix,
RPC_WSTR guidStr;
if (UuidToStringW ((UUID*)&guid, &guidStr) != S_OK)
goto fail;
-
/* We can't create a device path here since this path escapes the compiler
so instead return a normal path and have openFile deal with it. */
- wchar_t* devName = malloc (sizeof (wchar_t) * wcslen (pathName));
+ wchar_t* devName = malloc (sizeof (wchar_t) * (wcslen (pathName) + 1));
wcscpy (devName, pathName);
int len = wcslen (devName) + wcslen (suffix) + wcslen (prefix)
+ wcslen (guidStr) + 3;
@@ -204,6 +203,7 @@ bool __createUUIDTempFileErrNo (wchar_t* pathName, wchar_t* prefix,
free (devName);
RpcStringFreeW (&guidStr);
+
/* This should never happen because GUIDs are unique. But in case hell
froze over let's check anyway. */
DWORD dwAttrib = GetFileAttributesW (*tempFileName);