]> granicus.if.org Git - php/commitdiff
- Fixed bug #55299 (multiple null pointer in win32/registry.c)
authorFelipe Pena <felipensp@gmail.com>
Wed, 16 May 2012 11:40:12 +0000 (08:40 -0300)
committerFelipe Pena <felipensp@gmail.com>
Wed, 16 May 2012 11:40:12 +0000 (08:40 -0300)
win32/registry.c

index 35b411f4ce511af5c611ae7fdecee6f66c1cb5af..45e842b455fa4cb1e10dd4b95d0355b438af680b 100644 (file)
@@ -77,11 +77,16 @@ static int LoadDirectory(HashTable *directories, HKEY key, char *path, int path_
                                value_len = max_value+1;
                                if (RegEnumValue(key, i, name, &name_len, NULL, &type, value, &value_len) == ERROR_SUCCESS) {
                                        if ((type == REG_SZ) || (type == REG_EXPAND_SZ)) {
+                                               ht = (HashTable*)malloc(sizeof(HashTable));
                                                if (!ht) {
-                                                       ht = (HashTable*)malloc(sizeof(HashTable));
-                                                       zend_hash_init(ht, 0, NULL, ZVAL_INTERNAL_PTR_DTOR, 1);
+                                                       return ret;
                                                }
+                                               zend_hash_init(ht, 0, NULL, ZVAL_INTERNAL_PTR_DTOR, 1);
+
                                                data = (zval*)malloc(sizeof(zval));
+                                               if (!data) {
+                                                       return ret;
+                                               }
                                                INIT_PZVAL(data);
                                                Z_STRVAL_P(data) = zend_strndup(value, value_len-1);
                                                Z_STRLEN_P(data) = value_len-1;
@@ -174,6 +179,9 @@ void UpdateIniFromRegistry(char *path TSRMLS_DC)
 
        if (!PW32G(registry_directories)) {
                PW32G(registry_directories) = (HashTable*)malloc(sizeof(HashTable));
+               if (!PW32G(registry_directories)) {
+                       return;
+               }
                zend_hash_init(PW32G(registry_directories), 0, NULL, delete_internal_hashtable, 1);
                if (!OpenPhpRegistryKey("\\Per Directory Values", &PW32G(registry_key))) {
                        PW32G(registry_key) = NULL;