1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
Description: Save and restore umask across requests correctly.
.
Check if this is still an issue not addressed by upstream in some
other way already.
Origin: other
Bug-Debian: http://bugs.debian.org/286225
Forwarded: no
Last-Update: 2010-01-18
--- a/sapi/apache2handler/sapi_apache2.c
+++ b/sapi/apache2handler/sapi_apache2.c
@@ -469,6 +469,19 @@ static apr_status_t php_server_context_c
return APR_SUCCESS;
}
+static int saved_umask;
+
+static void php_save_umask(void)
+{
+ saved_umask = umask(077);
+ 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_length;
@@ -660,6 +673,8 @@ zend_first_try {
} else {
zend_file_handle zfd;
+ php_save_umask();
+
zfd.type = ZEND_HANDLE_FILENAME;
zfd.filename = (char *) r->filename;
zfd.free_filename = 0;
@@ -671,6 +686,9 @@ zend_first_try {
zend_execute_scripts(ZEND_INCLUDE TSRMLS_CC, NULL, 1, &zfd);
}
+ php_restore_umask();
+
+
apr_table_set(r->notes, "mod_php_memory_usage",
apr_psprintf(ctx->r->pool, "%u", zend_memory_peak_usage(1 TSRMLS_CC)));
}
|