From 646f9a4a8b6c371330ed62224a4d3f58cb2d220e Mon Sep 17 00:00:00 2001 From: Moriyoshi Koizumi Date: Tue, 20 Jul 2004 18:17:07 +0000 Subject: [PATCH] - MFH (filters.c: 1.41): Add more null checks. --- ext/standard/filters.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ext/standard/filters.c b/ext/standard/filters.c index 41f2e7f962..6fd4da1688 100644 --- a/ext/standard/filters.c +++ b/ext/standard/filters.c @@ -307,6 +307,7 @@ typedef enum _php_conv_err_t { PHP_CONV_ERR_INVALID_SEQ, PHP_CONV_ERR_UNEXPECTED_EOS, PHP_CONV_ERR_EXISTS, + PHP_CONV_ERR_ALLOC, PHP_CONV_ERR_NOT_FOUND } php_conv_err_t; @@ -1167,13 +1168,20 @@ static php_conv_err_t php_conv_get_string_prop_ex(const HashTable *ht, char **pr if (zend_hash_find((HashTable *)ht, field_name, field_name_len, (void **)&tmpval) == SUCCESS) { if (Z_TYPE_PP(tmpval) != IS_STRING) { zval zt = **tmpval; + convert_to_string(&zt); - *pretval = pemalloc(Z_STRLEN(zt) + 1, persistent); + + if (NULL == (*pretval = pemalloc(Z_STRLEN(zt) + 1, persistent))) { + return PHP_CONV_ERR_ALLOC; + } + *pretval_len = Z_STRLEN(zt); memcpy(*pretval, Z_STRVAL(zt), Z_STRLEN(zt) + 1); zval_dtor(&zt); } else { - *pretval = pemalloc(Z_STRLEN_PP(tmpval) + 1, persistent); + if (NULL == (*pretval = pemalloc(Z_STRLEN_PP(tmpval) + 1, persistent))) { + return PHP_CONV_ERR_ALLOC; + } *pretval_len = Z_STRLEN_PP(tmpval); memcpy(*pretval, Z_STRVAL_PP(tmpval), Z_STRLEN_PP(tmpval) + 1); } -- 2.40.0