Save and restore umask across requests correctly. --- sapi/apache2handler/sapi_apache2.c 2004-12-06 19:55:16.000000000 +0100 +++ sapi/apache2handler/sapi_apache2.c.oden 2004-12-16 11:05:48.550043216 +0100 @@ -399,6 +399,19 @@ return APR_SUCCESS; } +static int saved_umask; + +static void php_save_umask(void) +{ + saved_umask = umask(0777); + umask(saved_umask); +} + +static void php_restore_umask(void) +{ + umask(saved_umask); +} + static int php_apache_request_ctor(request_rec *r, php_struct *ctx TSRMLS_DC) { char *content_type; @@ -533,6 +546,8 @@ } else { zend_file_handle zfd = {0}; + php_save_umask(); + zfd.type = ZEND_HANDLE_FILENAME; zfd.filename = (char *) r->filename; zfd.free_filename = 0; @@ -543,6 +558,9 @@ } else { zend_execute_scripts(ZEND_INCLUDE TSRMLS_CC, NULL, 1, &zfd); } + + php_restore_umask(); + #if MEMORY_LIMIT { char *mem_usage;