From 294e776d950f7393faad5a96988c5122edf23e66 Mon Sep 17 00:00:00 2001 From: Sascha Schumann Date: Tue, 21 Jan 2003 11:03:58 +0000 Subject: [PATCH] add sapi_get_target_uid/_gid for obtaining information about the non-privileged user the web server is running as. this is useful for creating shared memory segments which need to be accessed by the child processes/threads. --- main/SAPI.c | 20 ++++++++++++++++++++ main/SAPI.h | 6 ++++++ sapi/apache/mod_php4.c | 21 ++++++++++++++++++++- 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/main/SAPI.c b/main/SAPI.c index a11f98c9533..d23ec9a4ef4 100644 --- a/main/SAPI.c +++ b/main/SAPI.c @@ -869,6 +869,26 @@ SAPI_API int sapi_force_http_10(TSRMLS_D) } } + +SAPI_API int sapi_get_target_uid(uid_t *obj TSRMLS_DC) +{ + if (sapi_module.get_target_uid) { + return sapi_module.get_target_uid(obj TSRMLS_CC); + } else { + return -1; + } +} + +SAPI_API int sapi_get_target_gid(gid_t *obj TSRMLS_DC) +{ + if (sapi_module.get_target_gid) { + return sapi_module.get_target_gid(obj TSRMLS_CC); + } else { + return -1; + } +} + + /* * Local variables: * tab-width: 4 diff --git a/main/SAPI.h b/main/SAPI.h index 81235574ca3..75c80fae41a 100644 --- a/main/SAPI.h +++ b/main/SAPI.h @@ -190,6 +190,9 @@ SAPI_API void sapi_activate_headers_only(TSRMLS_D); SAPI_API int sapi_get_fd(int *fd TSRMLS_DC); SAPI_API int sapi_force_http_10(TSRMLS_D); +SAPI_API int sapi_get_target_uid(uid_t * TSRMLS_DC); +SAPI_API int sapi_get_target_gid(gid_t * TSRMLS_DC); + struct _sapi_module_struct { char *name; char *pretty_name; @@ -231,6 +234,9 @@ struct _sapi_module_struct { int (*get_fd)(int *fd TSRMLS_DC); int (*force_http_10)(TSRMLS_D); + + int (*get_target_uid)(uid_t * TSRMLS_DC); + int (*get_target_gid)(gid_t * TSRMLS_DC); }; diff --git a/sapi/apache/mod_php4.c b/sapi/apache/mod_php4.c index 0f9eaeb0747..0a14fd68041 100644 --- a/sapi/apache/mod_php4.c +++ b/sapi/apache/mod_php4.c @@ -20,6 +20,7 @@ /* $Id$ */ #include "php_apache_http.h" +#include "http_conf_globals.h" #ifdef NETWARE #define SIGPIPE SIGINT @@ -371,6 +372,22 @@ static int sapi_apache_force_http_10(TSRMLS_D) return 0; } +/* {{{ sapi_apache_get_target_uid + */ +static int sapi_apache_get_target_uid(uid_t *obj TSRMLS_DC) +{ + *obj = ap_user_id; + return 0; +} + +/* {{{ sapi_apache_get_target_gid + */ +static int sapi_apache_get_target_gid(gid_t *obj TSRMLS_DC) +{ + *obj = ap_group_id; + return 0; +} + /* {{{ sapi_module_struct apache_sapi_module */ static sapi_module_struct apache_sapi_module = { @@ -415,7 +432,9 @@ static sapi_module_struct apache_sapi_module = { NULL, /* exe location */ 0, /* ini ignore */ sapi_apache_get_fd, - sapi_apache_force_http_10 + sapi_apache_force_http_10, + sapi_apache_get_target_uid, + sapi_apache_get_target_gid }; /* }}} */