cvs: php-src(PHP_5_2) /ext/standard array.c

From: Date: Sat, 22 Sep 2007 15:38:00 +0000
Subject: cvs: php-src(PHP_5_2) /ext/standard array.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-46283@lists.php.net to get a copy of this message
iliaa Sat Sep 22 15:38:00 2007 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/standard array.c Log: Fixed memory leak inside array_intersec (coverity issues #403,#404) http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.308.2.21.2.36&r2=1.308.2.21.2.37&diff_format=u Index: php-src/ext/standard/array.c diff -u php-src/ext/standard/array.c:1.308.2.21.2.36 php-src/ext/standard/array.c:1.308.2.21.2.37 --- php-src/ext/standard/array.c:1.308.2.21.2.36 Sat Sep 22 15:32:11 2007 +++ php-src/ext/standard/array.c Sat Sep 22 15:38:00 2007 @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: array.c,v 1.308.2.21.2.36 2007/09/22 15:32:11 iliaa Exp $ */ +/* $Id: array.c,v 1.308.2.21.2.37 2007/09/22 15:38:00 iliaa Exp $ */ #include "php.h" #include "php_ini.h" @@ -3156,10 +3156,12 @@ intersect_data_compare_func = array_user_compare; BG(user_compare_func_name) = args[arr_argc + 1];/* data - key */ } else { + efree(args); php_error_docref(NULL TSRMLS_CC, E_WARNING, "data_compare_type is %d. key_compare_type is %d. This should never happen. Please report as a bug.", data_compare_type, key_compare_type); return; } } else { + efree(args); php_error_docref(NULL TSRMLS_CC, E_WARNING, "behavior is %d. This should never happen. Please report as a bug", behavior); return; } @@ -3178,6 +3180,9 @@ hash = HASH_OF(*args[i]); list = (Bucket **) pemalloc((hash->nNumOfElements + 1) * sizeof(Bucket *), hash->persistent); if (!list) { + efree(args); + efree(lists); + efree(ptrs); RETURN_FALSE; } lists[i] = list; @@ -3612,10 +3617,12 @@ diff_data_compare_func = array_user_compare; BG(user_compare_func_name) = args[arr_argc + 1];/* data - key*/ } else { + efree(args); php_error_docref(NULL TSRMLS_CC, E_WARNING, "data_compare_type is %d. key_compare_type is %d. This should never happen. Please report as a bug", data_compare_type, key_compare_type); return; } } else { + efree(args); php_error_docref(NULL TSRMLS_CC, E_WARNING, "behavior is %d. This should never happen. Please report as a bug", behavior); return; } @@ -3634,6 +3641,7 @@ hash = HASH_OF(*args[i]); list = (Bucket **) pemalloc((hash->nNumOfElements + 1) * sizeof(Bucket *), hash->persistent); if (!list) { + efree(args); efree(ptrs); efree(lists); RETURN_FALSE;

« previous php.cvs (#46283) next »