com php-src: Fixed segfault in intlgregcal_create_instance : ext/intl/calendar/gregoriancalendar_methods.cpp ext /intl/intl_data.h

From: Date: Sun, 29 Jun 2014 14:56:27 +0000
Subject: com php-src: Fixed segfault in intlgregcal_create_instance : ext/intl/calendar/gregoriancalendar_methods.cpp ext /intl/intl_data.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-79135@lists.php.net to get a copy of this message
Commit: 499293449bbd3ef2f7dd3e904ee1a469e4ea0433 Author: Xinchen Hui <laruence@php.net> Sun, 29 Jun 2014 22:56:27 +0800 Parents: f096bc4d86ce1736bfc89dc5e0e0d70b027cf799 Branches: phpng Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=499293449bbd3ef2f7dd3e904ee1a469e4ea0433 Log: Fixed segfault in intlgregcal_create_instance Changed paths: M ext/intl/calendar/gregoriancalendar_methods..cpp M ext/intl/intl_data.h Diff: diff --git a/ext/intl/calendar/gregoriancalendar_methods.cpp b/ext/intl/calendar/gregoriancalendar_methods.cpp index e08d263..41e2735 100644 --- a/ext/intl/calendar/gregoriancalendar_methods.cpp +++ b/ext/intl/calendar/gregoriancalendar_methods.cpp @@ -182,7 +182,8 @@ U_CFUNC PHP_FUNCTION(intlgregcal_create_instance) _php_intlgregcal_constructor_body(INTERNAL_FUNCTION_PARAM_PASSTHRU); if (Z_TYPE_P(return_value) == IS_OBJECT && Z_OBJ_P(return_value) == NULL) { - zend_object_store_ctor_failed(Z_OBJ(orig) TSRMLS_CC); + zval_dtor(&orig); + RETURN_NULL(); } } diff --git a/ext/intl/intl_data.h b/ext/intl/intl_data.h index 4dd1508...1b764a2 100644 --- a/ext/intl/intl_data.h +++ b/ext/intl/intl_data.h @@ -69,6 +69,11 @@ typedef struct _intl_data { if( U_FAILURE( INTL_DATA_ERROR_CODE((obj)) ) ) \ { \ intl_errors_set_custom_msg( INTL_DATA_ERROR_P((obj)), msg, 0 TSRMLS_CC ); \ + /* yes, this is ugly, but it alreay is */ \ + if (return_value != getThis()) { \ + zval_dtor(return_value); \ + RETURN_NULL(); \ + } \ Z_OBJ_P(return_value) = NULL; \ return; \ }

« previous php.cvs (#79135) next »