]> granicus.if.org Git - php/commitdiff
(PHP unserialize) - fixed mem-leak.
authorThies C. Arntzen <thies@php.net>
Mon, 18 Oct 1999 15:03:29 +0000 (15:03 +0000)
committerThies C. Arntzen <thies@php.net>
Mon, 18 Oct 1999 15:03:29 +0000 (15:03 +0000)
ext/standard/var.c

index f5d61dc1f5fbb1a30c180f207280cec5dca3d1eb..6f82505b2fb9ccd420c4eb54a8d7650416f4fc68 100644 (file)
@@ -419,6 +419,7 @@ int php_var_unserialize(pval **rval, const char **p, const char *max)
                                (*p)++;
                        }
                        if (**p != ':' || *((*p) + 1) != '{') {
+                               pval_destructor(*rval);
                                return 0;
                        }
                        for ((*p) += 2; **p && **p != '}' && i > 0; i--) {
@@ -426,11 +427,13 @@ int php_var_unserialize(pval **rval, const char **p, const char *max)
                                pval *data = emalloc(sizeof(pval));
                                
                                if (!php_var_unserialize(&key, p, max)) {
+                                       pval_destructor(*rval);
                                    efree(key);
                                        efree(data);
                                        return 0;
                                }
                                if (!php_var_unserialize(&data, p, max)) {
+                                       pval_destructor(*rval);
                                        pval_destructor(key);
                                    efree(key);
                                        efree(data);