]> granicus.if.org Git - python/commitdiff
Patch for [ Bug #113828 ] getpythonregpath with null data in registry key
authorMark Hammond <mhammond@skippinet.com.au>
Sun, 10 Sep 2000 09:14:53 +0000 (09:14 +0000)
committerMark Hammond <mhammond@skippinet.com.au>
Sun, 10 Sep 2000 09:14:53 +0000 (09:14 +0000)
If there was a NULL registry key, Python could barf.

Also wraps some surrounding lines to 80 chars.

PC/getpathp.c

index 3ed912464711186ac2ed401781be709999c9d5c8..a3c2bf00ffa94062f83f495a678f0c1bdbc10104 100644 (file)
@@ -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