com php-src: Fixed segfaults: ext/intl/calendar/calendar_meth ods.cpp ext/intl/intl_data.h ext/intl/resourcebundle/ resourcebundle_class.c

From: Date: Sat, 28 Jun 2014 12:52:41 +0000
Subject: com php-src: Fixed segfaults: ext/intl/calendar/calendar_meth ods.cpp ext/intl/intl_data.h ext/intl/resourcebundle/ resourcebundle_class.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-79108@lists.php.net to get a copy of this message
Commit: b53bc5c7623db88ba3a2f58c397c06e36e9cad5d Author: Xinchen Hui <laruence@php.net> Sat, 28 Jun 2014 20:52:41 +0800 Parents: e4e9e80067076074e3e6fd9fd2603ec7698c0d33 Branches: phpng Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=b53bc5c7623db88ba3a2f58c397c06e36e9cad5d Log: Fixed segfaults Changed paths: M ext/intl/calendar/calendar_methods.cpp M ext/intl/intl_data.h M ext/intl/resourcebundle/resourcebundle_class.c Diff: diff --git a/ext/intl/calendar/calendar_methods.cpp b/ext/intl/calendar/calendar_methods.cpp index 54fe15a..05051d0 100644 --- a/ext/intl/calendar/calendar_methods.cpp +++ b/ext/intl/calendar/calendar_methods.cpp @@ -1220,7 +1220,7 @@ U_CFUNC PHP_FUNCTION(intlcal_from_date_time) calendar_object_create(return_value, cal TSRMLS_CC); error: - if (zv_datetime != zv_arg) { + if (zv_datetime && zv_datetime != zv_arg) { zval_ptr_dtor(zv_datetime); } if (zv_timestamp) { diff --git a/ext/intl/intl_data.h b/ext/intl/intl_data.h index 4b603c8..5c65b9c 100644 --- a/ext/intl/intl_data.h +++ b/ext/intl/intl_data.h @@ -28,8 +28,8 @@ for this to work! */ typedef struct _intl_data { - zend_object zo; intl_error error; + zend_object zo; } intl_object; #define INTL_METHOD_INIT_VARS(oclass, obj) \ diff --git a/ext/intl/resourcebundle/resourcebundle_class.c b/ext/intl/resourcebundle/resourcebundle_class.c index 0def78e..99e5784 100644 --- a/ext/intl/resourcebundle/resourcebundle_class.c +++ b/ext/intl/resourcebundle/resourcebundle_class.c @@ -92,8 +92,8 @@ static void resourcebundle_ctor(INTERNAL_FUNCTION_PARAMETERS) { intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, "resourcebundle_ctor: unable to parse input parameters", 0 TSRMLS_CC ); - zval_dtor( return_value ); - RETURN_NULL(); + Z_OBJ_P(return_value) = NULL; + return; } INTL_CHECK_LOCALE_LEN_OBJ(locale_len, return_value); @@ -152,6 +152,9 @@ PHP_FUNCTION( resourcebundle_create ) { object_init_ex( return_value, ResourceBundle_ce_ptr ); resourcebundle_ctor(INTERNAL_FUNCTION_PARAM_PASSTHRU); + if (Z_TYPE_P(return_value) == IS_OBJECT && Z_OBJ_P(return_value) == NULL) { + RETURN_NULL(); + } } /* }}} */

« previous php.cvs (#79108) next »