diff --git a/main/main.c b/main/main.c index f7a768fdd28..4bf20966e0b 100644 --- a/main/main.c +++ b/main/main.c @@ -1868,7 +1868,7 @@ void php_request_shutdown(void *dummy) } } zend_end_try(); - /* 7.5 free last error information */ + /* 7.5 free last error information and temp dir */ if (PG(last_error_message)) { free(PG(last_error_message)); PG(last_error_message) = NULL; @@ -1877,6 +1877,7 @@ void php_request_shutdown(void *dummy) free(PG(last_error_file)); PG(last_error_file) = NULL; } + php_shutdown_temporary_directory(); /* 7. Shutdown scanner/executor/compiler and restore ini entries */ zend_deactivate(TSRMLS_C); @@ -2475,7 +2476,6 @@ void php_module_shutdown(TSRMLS_D) #endif php_output_shutdown(); - php_shutdown_temporary_directory(); module_initialized = 0; diff --git a/main/php_open_temporary_file.c b/main/php_open_temporary_file.c index 7968e0cc2c8..a18adaa8cdb 100644 --- a/main/php_open_temporary_file.c +++ b/main/php_open_temporary_file.c @@ -181,7 +181,7 @@ static char* temporary_directory; PHPAPI void php_shutdown_temporary_directory(void) { if (temporary_directory) { - free(temporary_directory); + efree(temporary_directory); temporary_directory = NULL; } } @@ -202,10 +202,10 @@ PHPAPI const char* php_get_temporary_directory(TSRMLS_D) if (sys_temp_dir) { int len = strlen(sys_temp_dir); if (len >= 2 && sys_temp_dir[len - 1] == DEFAULT_SLASH) { - temporary_directory = zend_strndup(sys_temp_dir, len - 1); + temporary_directory = estrndup(sys_temp_dir, len - 1); return temporary_directory; } else if (len >= 1 && sys_temp_dir[len - 1] != DEFAULT_SLASH) { - temporary_directory = zend_strndup(sys_temp_dir, len); + temporary_directory = estrndup(sys_temp_dir, len); return temporary_directory; } } @@ -222,9 +222,9 @@ PHPAPI const char* php_get_temporary_directory(TSRMLS_D) DWORD len = GetTempPath(sizeof(sTemp),sTemp); assert(0 < len); /* should *never* fail! */ if (sTemp[len - 1] == DEFAULT_SLASH) { - temporary_directory = zend_strndup(sTemp, len - 1); + temporary_directory = estrndup(sTemp, len - 1); } else { - temporary_directory = zend_strndup(sTemp, len); + temporary_directory = estrndup(sTemp, len); } return temporary_directory; } @@ -236,9 +236,9 @@ PHPAPI const char* php_get_temporary_directory(TSRMLS_D) int len = strlen(s); if (s[len - 1] == DEFAULT_SLASH) { - temporary_directory = zend_strndup(s, len - 1); + temporary_directory = estrndup(s, len - 1); } else { - temporary_directory = zend_strndup(s, len); + temporary_directory = estrndup(s, len); } return temporary_directory; @@ -247,12 +247,12 @@ PHPAPI const char* php_get_temporary_directory(TSRMLS_D) #ifdef P_tmpdir /* Use the standard default temporary directory. */ if (P_tmpdir) { - temporary_directory = strdup(P_tmpdir); + temporary_directory = estrdup(P_tmpdir); return temporary_directory; } #endif /* Shouldn't ever(!) end up here ... last ditch default. */ - temporary_directory = strdup("/tmp"); + temporary_directory = estrndup("/tmp", sizeof("/tmp")); return temporary_directory; #endif }