]> granicus.if.org Git - php/commitdiff
- Fix possible SEGV
authorMarcus Boerger <helly@php.net>
Mon, 10 Apr 2006 19:48:27 +0000 (19:48 +0000)
committerMarcus Boerger <helly@php.net>
Mon, 10 Apr 2006 19:48:27 +0000 (19:48 +0000)
ext/pgsql/pgsql.c

index 69748001ee3e1044f1ccc042d5103eedaf3ab4a7..02f15232b6aabbdc99b4bd398e6249c93d878648 100644 (file)
@@ -4586,7 +4586,7 @@ PHP_PGSQL_API int php_pgsql_convert(PGconn *pg_link, const char *table_name, con
        char *field = NULL;
        uint field_len = -1;
        ulong num_idx = -1;
-       zval *meta, **def, **type, **not_null, **has_default, **val, *new_val;
+       zval *meta, **def, **type, **not_null, **has_default, **val, *new_val = NULL;
        int new_len, key_type, err = 0, skip_field;
        
        assert(pg_link != NULL);
@@ -4646,7 +4646,7 @@ PHP_PGSQL_API int php_pgsql_convert(PGconn *pg_link, const char *table_name, con
                if (err) {
                        break; /* break out for() */
                }
-               MAKE_STD_ZVAL(new_val);
+               ALLOC_INIT_ZVAL(new_val);
                switch(php_pgsql_get_data_type(Z_STRVAL_PP(type), Z_STRLEN_PP(type)))
                {
                        case PG_BOOL:
@@ -5178,7 +5178,7 @@ PHP_PGSQL_API int php_pgsql_convert(PGconn *pg_link, const char *table_name, con
                                break;
                } /* switch */
                
-               if (err) {
+               if (err && new_val) {
                        zval_dtor(new_val);
                        FREE_ZVAL(new_val);
                        break; /* break out for() */