From e61aca7d4a17f231d0058c6be736bc1eea40c081 Mon Sep 17 00:00:00 2001 From: Mark Hammond Date: Sun, 10 Sep 2000 09:14:53 +0000 Subject: Patch for [ Bug #113828 ] getpythonregpath with null data in registry key If there was a NULL registry key, Python could barf. Also wraps some surrounding lines to 80 chars. --- PC/getpathp.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/PC/getpathp.c b/PC/getpathp.c index 3ed9124..a3c2bf0 100644 --- a/PC/getpathp.c +++ b/PC/getpathp.c @@ -263,7 +263,9 @@ getpythonregpath(HKEY keyBase, int skipcore) if (reqdSize) { ppPaths[index] = malloc(reqdSize); if (ppPaths[index]) { - RegQueryValueEx(subKey, NULL, 0, NULL, (LPBYTE)ppPaths[index], &reqdSize); + RegQueryValueEx(subKey, NULL, 0, NULL, + (LPBYTE)ppPaths[index], + &reqdSize); dataSize += reqdSize + 1; /* 1 for the ";" */ } } @@ -275,23 +277,27 @@ getpythonregpath(HKEY keyBase, int skipcore) DWORD reqdSize = dataSize; /* Copy our collected strings */ for (index=0;index 0) { *(szCur++) = _T(';'); dataSize--; } - len = _tcslen(ppPaths[index]); - _tcsncpy(szCur, ppPaths[index], len); - szCur += len; - dataSize -= len; + if (ppPaths[index]) { + int len = _tcslen(ppPaths[index]); + _tcsncpy(szCur, ppPaths[index], len); + szCur += len; + dataSize -= len; + } } if (skipcore) *szCur = '\0'; else { *(szCur++) = _T(';'); dataSize--; - /* Now append the core path entries - this will include the NULL */ - rc = RegQueryValueEx(newKey, NULL, 0, NULL, (LPBYTE)szCur, &dataSize); + /* Now append the core path entries - + this will include the NULL + */ + rc = RegQueryValueEx(newKey, NULL, 0, NULL, + (LPBYTE)szCur, &dataSize); } /* And set the result - caller must free If MBCS, it is fine as is. If Unicode, allocate new -- cgit v0.12