summaryrefslogtreecommitdiff
path: root/PC/getpathp.c
diff options
context:
space:
mode:
authorMark Hammond <mhammond@skippinet.com.au>2000-09-10 09:14:53 +0000
committerMark Hammond <mhammond@skippinet.com.au>2000-09-10 09:14:53 +0000
commitbe2837e6c40460bf1e01a4fd49217eb198af5e82 (patch)
treeab8e774395488682cc28114b7d29b22017e9bff6 /PC/getpathp.c
parent88d20250c87b73abe7ed94aeb2111978eee54cb4 (diff)
downloadcpython-be2837e6c40460bf1e01a4fd49217eb198af5e82.tar.gz
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.
Diffstat (limited to 'PC/getpathp.c')
-rw-r--r--PC/getpathp.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/PC/getpathp.c b/PC/getpathp.c
index 3ed9124647..a3c2bf00ff 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<numKeys;index++) {
- int len;
if (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