From: Felipe Pena Date: Fri, 16 May 2008 12:11:15 +0000 (+0000) Subject: - Improved fix (used 's' in parameter parsing) X-Git-Tag: BEFORE_HEAD_NS_CHANGE~1749 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f4458df3d45357359d1a2cf29e6e3ad0b5012fe1;p=php - Improved fix (used 's' in parameter parsing) --- diff --git a/ext/standard/dl.c b/ext/standard/dl.c index f8092bb15d..966991245d 100644 --- a/ext/standard/dl.c +++ b/ext/standard/dl.c @@ -54,15 +54,14 @@ Load a PHP extension at runtime */ PHP_FUNCTION(dl) { - zval *filename; + char *filename; + int filename_len; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z/", &filename) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s&", &filename, &filename_len, ZEND_U_CONVERTER(UG(filesystem_encoding_conv))) == FAILURE) { return; } - - convert_to_string(filename); - if (Z_STRLEN_P(filename) >= MAXPATHLEN) { + if (filename_len >= MAXPATHLEN) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "File name exceeds the maximum allowed length of %d characters", MAXPATHLEN); RETURN_FALSE; } @@ -72,10 +71,10 @@ PHP_FUNCTION(dl) (strncmp(sapi_module.name, "embed", 5) != 0) ) { #ifdef ZTS - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not supported in multithreaded Web servers - use extension=%s in your php.ini", Z_STRVAL_P(filename)); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not supported in multithreaded Web servers - use extension=%s in your php.ini", filename); RETURN_FALSE; #else - php_error_docref(NULL TSRMLS_CC, E_DEPRECATED, "dl() is deprecated - use extension=%s in your php.ini", Z_STRVAL_P(filename)); + php_error_docref(NULL TSRMLS_CC, E_DEPRECATED, "dl() is deprecated - use extension=%s in your php.ini", filename); #endif } @@ -243,29 +242,14 @@ PHPAPI int php_load_extension(char *filename, int type, int start_now TSRMLS_DC) /* {{{ php_dl */ -PHPAPI void php_dl(zval *file, int type, zval *return_value, int start_now TSRMLS_DC) +PHPAPI void php_dl(char *file, int type, zval *return_value, int start_now TSRMLS_DC) { - char *filename; - int filename_len; - - if (Z_TYPE_P(file) == IS_UNICODE) { - if (FAILURE == php_stream_path_encode(NULL, &filename, &filename_len, Z_USTRVAL_P(file), Z_USTRLEN_P(file), REPORT_ERRORS, FG(default_context))) { - return; - } - } else { - filename = Z_STRVAL_P(file); - } - /* Load extension */ - if (php_load_extension(filename, type, start_now TSRMLS_CC) == FAILURE) { + if (php_load_extension(file, type, start_now TSRMLS_CC) == FAILURE) { RETVAL_FALSE; } else { RETVAL_TRUE; } - - if (Z_TYPE_P(file) == IS_UNICODE) { - efree(filename); - } } /* }}} */ @@ -276,9 +260,9 @@ PHP_MINFO_FUNCTION(dl) #else -PHPAPI void php_dl(zval *file, int type, zval *return_value, int start_now TSRMLS_DC) +PHPAPI void php_dl(char *file, int type, zval *return_value, int start_now TSRMLS_DC) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot dynamically load %R - dynamic modules are not supported", Z_TYPE_P(file), Z_UNIVAL_P(file)); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot dynamically load %s - dynamic modules are not supported", file); RETURN_FALSE; } diff --git a/ext/standard/dl.h b/ext/standard/dl.h index 819d652a1a..75bf205aef 100644 --- a/ext/standard/dl.h +++ b/ext/standard/dl.h @@ -24,7 +24,7 @@ #define DL_H PHPAPI int php_load_extension(char *filename, int type, int start_now TSRMLS_DC); -PHPAPI void php_dl(zval *file,int type, zval *return_value, int start_now TSRMLS_DC); +PHPAPI void php_dl(char *file, int type, zval *return_value, int start_now TSRMLS_DC); /* dynamic loading functions */ PHPAPI PHP_FUNCTION(dl);