--- embedaddon/php/ext/odbc/php_odbc.c 2012/02/21 23:47:59 1.1 +++ embedaddon/php/ext/odbc/php_odbc.c 2014/06/15 20:03:52 1.1.1.5 @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2012 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_odbc.c,v 1.1 2012/02/21 23:47:59 misho Exp $ */ +/* $Id: php_odbc.c,v 1.1.1.5 2014/06/15 20:03:52 misho Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -387,7 +387,7 @@ const zend_function_entry odbc_functions[] = { }; /* }}} */ -ZEND_DECLARE_MODULE_GLOBALS(odbc); +ZEND_DECLARE_MODULE_GLOBALS(odbc) static PHP_GINIT_FUNCTION(odbc); /* {{{ odbc_module_entry @@ -1317,19 +1317,13 @@ PHP_FUNCTION(odbc_execute) if (Z_STRLEN_PP(tmp) > 2 && Z_STRVAL_PP(tmp)[0] == '\'' && Z_STRVAL_PP(tmp)[Z_STRLEN_PP(tmp) - 1] == '\'') { - if (strlen(tmp) != Z_STRLEN_PP(tmp)) { + + if (CHECK_ZVAL_NULL_PATH(*tmp)) { RETURN_FALSE; } - filename = estrndup(&Z_STRVAL_PP(tmp)[1], Z_STRLEN_PP(tmp) - 2); + filename[strlen(filename)] = '\0'; - /* Check for safe mode. */ - if (PG(safe_mode) && (!php_checkuid(filename, NULL, CHECKUID_CHECK_FILE_AND_DIR))) { - efree(filename); - efree(params); - RETURN_FALSE; - } - /* Check the basedir */ if (php_check_open_basedir(filename TSRMLS_CC)) { efree(filename); @@ -1771,7 +1765,7 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARA if (result_type & ODBC_NUM) { zend_hash_index_update(Z_ARRVAL_P(return_value), i, &tmp, sizeof(zval *), NULL); } else { - if (!*(result->values[i].name)) { + if (!*(result->values[i].name) && Z_TYPE_P(tmp) == IS_STRING) { zend_hash_update(Z_ARRVAL_P(return_value), Z_STRVAL_P(tmp), Z_STRLEN_P(tmp)+1, &tmp, sizeof(zval *), NULL); } else { zend_hash_update(Z_ARRVAL_P(return_value), result->values[i].name, strlen(result->values[i].name)+1, &tmp, sizeof(zval *), NULL); @@ -2710,7 +2704,7 @@ PHP_FUNCTION(odbc_num_rows) #if !defined(HAVE_SOLID) && !defined(HAVE_SOLID_30) /* {{{ proto bool odbc_next_result(resource result_id) - Checks if multiple results are avaiable */ + Checks if multiple results are available */ PHP_FUNCTION(odbc_next_result) { odbc_result *result;