Download | Plain Text | No Line Numbers
- diff -Naur php-5.3.2.orig/ext/standard/mail.c php-5.3.2/ext/standard/mail.c
- --- php-5.3.2.orig/ext/standard/mail.c 2010-02-05 01:19:32.000000000 +0100
- +++ php-5.3.2/ext/standard/mail.c 2010-06-04 00:34:46.000000000 +0200
- @@ -271,6 +271,20 @@
- sendmail_cmd = sendmail_path;
- }
-
- + zval suexec_user;
- + char *env_user1 = NULL;
- + char *env_user2 = NULL;
- + if (zend_get_constant("SUEXEC_USER", sizeof("SUEXEC_USER") - 1, &suexec_user TSRMLS_CC)) {
- + if (Z_TYPE(suexec_user) == IS_STRING && Z_STRLEN(suexec_user) != 0) {
- + env_user1 = emalloc(sizeof("USER=") + Z_STRLEN(suexec_user) + 1);
- + strcpy(env_user1, "USER=");
- + strcat(env_user1, Z_STRVAL(suexec_user));
- + env_user2 = getenv("USER");
- + putenv(env_user1);
- + }
- + zval_dtor(&suexec_user);
- + }
- +
- #if PHP_SIGCHILD
- /* Set signal handler of SIGCHLD to default to prevent other signal handlers
- * from being called and reaping the return code when our child exits.
- @@ -294,6 +308,14 @@
- efree (sendmail_cmd);
- }
-
- + if (env_user1 != NULL) {
- + if (env_user2 != NULL)
- + putenv(env_user2 - sizeof("USER"));
- + else
- + unsetenv("USER");
- + efree(env_user1);
- + }
- +
- if (sendmail) {
- #ifndef PHP_WIN32
- if (EACCES == errno) {
- diff -Naur php-5.3.2.orig/sapi/apache/mod_php5.c php-5.3.2/sapi/apache/mod_php5.c
- --- php-5.3.2.orig/sapi/apache/mod_php5.c 2010-02-05 20:34:47.000000000 +0100
- +++ php-5.3.2/sapi/apache/mod_php5.c 2010-06-04 00:34:00.000000000 +0200
- @@ -260,6 +260,15 @@
- HashTable *symbol_table;
- unsigned int new_val_len;
-
- +#if !defined(WIN32) && !defined(WINNT)
- + server_rec *serv;
- + struct passwd *suexec_pw;
- + struct group *suexec_gr;
- + extern uid_t user_id;
- + extern gid_t group_id;
- + extern int suexec_enabled;
- +#endif
- +
- for (i = 0; i < arr->nelts; i++) {
- char *val;
- int val_len;
- @@ -290,6 +299,19 @@
- php_register_variable("PATH_TRANSLATED", Z_STRVAL_PP(path_translated), track_vars_array TSRMLS_CC);
- }
-
- +#if !defined(WIN32) && !defined(WINNT)
- + zend_hash_del(EG(zend_constants), "SUEXEC_USER", sizeof("SUEXEC_USER"));
- + zend_hash_del(EG(zend_constants), "SUEXEC_GROUP", sizeof("SUEXEC_GROUP"));
- + serv = ((request_rec *) SG(server_context))->server;
- + if (suexec_enabled
- + && serv->server_uid != user_id
- + && (suexec_pw = getpwuid(serv->server_uid)) != NULL
- + && (suexec_gr = getgrgid(serv->server_gid)) != NULL) {
- + REGISTER_MAIN_STRINGL_CONSTANT("SUEXEC_USER", estrdup(suexec_pw->pw_name), strlen(suexec_pw->pw_name), CONST_CS);
- + REGISTER_MAIN_STRINGL_CONSTANT("SUEXEC_GROUP", estrdup(suexec_gr->gr_name), strlen(suexec_gr->gr_name), CONST_CS);
- + }
- +#endif
- +
- if (sapi_module.input_filter(PARSE_SERVER, "PHP_SELF", &((request_rec *) SG(server_context))->uri, strlen(((request_rec *) SG(server_context))->uri), &new_val_len TSRMLS_CC)) {
- php_register_variable("PHP_SELF", ((request_rec *) SG(server_context))->uri, track_vars_array TSRMLS_CC);
- }
- diff -Naur php-5.3.2.orig/sapi/apache/php_apache.c php-5.3.2/sapi/apache/php_apache.c
- --- php-5.3.2.orig/sapi/apache/php_apache.c 2010-01-03 10:23:27.000000000 +0100
- +++ php-5.3.2/sapi/apache/php_apache.c 2010-06-04 00:34:00.000000000 +0200
- @@ -168,6 +168,8 @@
- char name[64];
- char modulenames[1024];
- char *p;
- + struct passwd *pw;
- + extern int suexec_enabled;
- #endif
- server_rec *serv;
- extern char server_root[MAX_STRING_LEN];
- @@ -209,6 +211,12 @@
- #if !defined(WIN32) && !defined(WINNT)
- snprintf(output_buf, sizeof(output_buf), "%s(%d)/%d", user_name, (int)user_id, (int)group_id);
- php_info_print_table_row(2, "User/Group", output_buf);
- + if (suexec_enabled
- + && serv->server_uid != user_id
- + && (pw = getpwuid(serv->server_uid)) != NULL) {
- + sprintf(output_buf, "%s(%ld)/%ld", pw->pw_name, (long)serv->server_uid, (long)serv->server_gid);
- + php_info_print_table_row(2, "Suexec User/Group", output_buf);
- + }
- snprintf(output_buf, sizeof(output_buf), "Per Child: %d - Keep Alive: %s - Max Per Connection: %d", max_requests_per_child, serv->keep_alive ? "on":"off", serv->keep_alive_max);
- php_info_print_table_row(2, "Max Requests", output_buf);
- #endif
- diff -Naur php-5.3.2.orig/sapi/apache2handler/php_functions.c php-5.3.2/sapi/apache2handler/php_functions.c
- --- php-5.3.2.orig/sapi/apache2handler/php_functions.c 2010-01-03 10:23:27.000000000 +0100
- +++ php-5.3.2/sapi/apache2handler/php_functions.c 2010-06-04 00:34:00.000000000 +0200
- @@ -377,6 +377,8 @@
- #else
- AP_DECLARE_DATA extern unixd_config_rec unixd_config;
- #endif
- + ap_unix_identity_t *identity;
- + struct passwd *pw;
- #endif
-
- for (n = 0; ap_loaded_modules[n]; ++n) {
- @@ -413,6 +415,23 @@
- snprintf(tmp, sizeof(tmp), "%s(%d)/%d", unixd_config.user_name, unixd_config.user_id, unixd_config.group_id);
- #endif
- php_info_print_table_row(2, "User/Group", tmp);
- +#if MODULE_MAGIC_NUMBER_MAJOR >= 20081201
- + if (ap_unixd_config.suexec_enabled
- + && (identity = ap_run_get_suexec_identity(((php_struct *) SG(server_context))->r))
- + && identity->uid != ap_unixd_config.user_id
- + && (pw = getpwuid(identity->uid)) != NULL) {
- + sprintf(tmp, "%s(%ld)/%ld", pw->pw_name, (long)identity->uid, (long)identity->gid);
- + php_info_print_table_row(2, "Suexec User/Group", tmp);
- + }
- +#else
- + if (unixd_config.suexec_enabled
- + && (identity = ap_run_get_suexec_identity(((php_struct *) SG(server_context))->r))
- + && identity->uid != unixd_config.user_id
- + && (pw = getpwuid(identity->uid)) != NULL) {
- + sprintf(tmp, "%s(%ld)/%ld", pw->pw_name, (long)identity->uid, (long)identity->gid);
- + php_info_print_table_row(2, "Suexec User/Group", tmp);
- + }
- +#endif
- #endif
-
- ap_mpm_query(AP_MPMQ_MAX_REQUESTS_DAEMON, &max_requests);
- diff -Naur php-5.3.2.orig/sapi/apache2handler/sapi_apache2.c php-5.3.2/sapi/apache2handler/sapi_apache2.c
- --- php-5.3.2.orig/sapi/apache2handler/sapi_apache2.c 2010-02-05 20:34:47.000000000 +0100
- +++ php-5.3.2/sapi/apache2handler/sapi_apache2.c 2010-06-04 00:34:00.000000000 +0200
- @@ -50,6 +50,9 @@
- #include "util_script.h"
- #include "http_core.h"
- #include "ap_mpm.h"
- +#if !defined(WIN32) && !defined(WINNT)
- +#include "unixd.h"
- +#endif
-
- #include "php_apache.h"
-
- @@ -258,6 +261,13 @@
- char *key, *val;
- int new_val_len;
-
- +#if !defined(WIN32) && !defined(WINNT)
- + AP_DECLARE_DATA extern unixd_config_rec unixd_config;
- + ap_unix_identity_t *identity;
- + struct passwd *suexec_pw;
- + struct group *suexec_gr;
- +#endif
- +
- APR_ARRAY_FOREACH_OPEN(arr, key, val)
- if (!val) {
- val = "";
- @@ -267,6 +277,19 @@
- }
- APR_ARRAY_FOREACH_CLOSE()
-
- +#if !defined(WIN32) && !defined(WINNT)
- + zend_hash_del(EG(zend_constants), "SUEXEC_USER", sizeof("SUEXEC_USER"));
- + zend_hash_del(EG(zend_constants), "SUEXEC_GROUP", sizeof("SUEXEC_GROUP"));
- + if (unixd_config.suexec_enabled
- + && (identity = ap_run_get_suexec_identity(((php_struct *) SG(server_context))->r))
- + && identity->uid != unixd_config.user_id
- + && (suexec_pw = getpwuid(identity->uid)) != NULL
- + && (suexec_gr = getgrgid(identity->gid)) != NULL) {
- + REGISTER_MAIN_STRINGL_CONSTANT("SUEXEC_USER", estrdup(suexec_pw->pw_name), strlen(suexec_pw->pw_name), CONST_CS);
- + REGISTER_MAIN_STRINGL_CONSTANT("SUEXEC_GROUP", estrdup(suexec_gr->gr_name), strlen(suexec_gr->gr_name), CONST_CS);
- + }
- +#endif
- +
- if (sapi_module.input_filter(PARSE_SERVER, "PHP_SELF", &ctx->r->uri, strlen(ctx->r->uri), &new_val_len TSRMLS_CC)) {
- php_register_variable_safe("PHP_SELF", ctx->r->uri, new_val_len, track_vars_array TSRMLS_CC);
- }
-