From 4558cdade685dc38681bd09db821d9c5fad8d716 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Mon, 4 Apr 2005 14:59:40 +0000 Subject: Bug #32491 (File upload error - unable to create a temporary file) - Changing file upload from stdio to posix --- NEWS | 2 ++ main/rfc1867.c | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index 54fab34..8acf646 100644 --- a/NEWS +++ b/NEWS @@ -96,6 +96,8 @@ PHP NEWS - Fixed bug with raw_post_data not getting set. (Brian) - Fixed bug in mysql::client_version(). (Georg) - Fixed ZTS destruction. (Marcus) +- Fixed bug #32491 (File upload error - unable to create a temporary file). + (Uwe Schindler) - Fixed bug #32109 ($_POST is not populated in multithreaded environment). (Moriyoshi) - Fixed bug #31478 (segfault with empty() / isset()). (Moriyoshi) diff --git a/main/rfc1867.c b/main/rfc1867.c index 54f775e..3987bf8 100644 --- a/main/rfc1867.c +++ b/main/rfc1867.c @@ -784,7 +784,7 @@ SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler) zend_bool magic_quotes_gpc; multipart_buffer *mbuff; zval *array_ptr = (zval *) arg; - FILE *fp; + int fd=-1; zend_llist header; if (SG(request_info).content_length > SG(post_max_size)) { @@ -969,8 +969,8 @@ SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler) if (!skip_upload) { /* Handle file */ - fp = php_open_temporary_file(PG(upload_tmp_dir), "php", &temp_filename TSRMLS_CC); - if (!fp) { + fd = php_open_temporary_fd(PG(upload_tmp_dir), "php", &temp_filename TSRMLS_CC); + if (fd==-1) { sapi_module.sapi_error(E_WARNING, "File upload error - unable to create a temporary file"); cancel_upload = UPLOAD_ERROR_E; } @@ -1001,7 +1001,7 @@ SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler) #endif cancel_upload = UPLOAD_ERROR_B; } else if (blen > 0) { - wlen = fwrite(buff, 1, blen, fp); + wlen = write(fd, buff, blen); if (wlen < blen) { #if DEBUG_FILE_UPLOAD @@ -1013,8 +1013,8 @@ SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler) } } } - if (fp) { /* may not be initialized if file could not be created */ - fclose(fp); + if (fd!=-1) { /* may not be initialized if file could not be created */ + close(fd); } #if DEBUG_FILE_UPLOAD -- cgit v0.12