X-Git-Url: https://git.tld-linux.org/?p=packages%2Fapache.git;a=blobdiff_plain;f=apache-suexec_fcgi.patch;h=ae5578c7f1e0b4997ace3b1ea07c5c3ab7dcc420;hp=06fcfef46a80e7770f31b15df9c30da801591b08;hb=f13f85964fc303b8f372ee81cd9e141a25f0b8ad;hpb=a4cac23f9e06b9e3ea4f6678f43e938ad0dad931 diff --git a/apache-suexec_fcgi.patch b/apache-suexec_fcgi.patch index 06fcfef..ae5578c 100644 --- a/apache-suexec_fcgi.patch +++ b/apache-suexec_fcgi.patch @@ -1,6 +1,7 @@ ---- httpd-2.4.4/support/suexec.c.orig 2012-12-03 17:33:42.000000000 +0100 -+++ httpd-2.4.4/support/suexec.c 2013-03-07 23:13:29.312581994 +0100 -@@ -240,6 +240,21 @@ +diff -urNp httpd-2.4.4.orig/support/suexec.c httpd-2.4.4/support/suexec.c +--- httpd-2.4.4.orig/support/suexec.c 2012-12-03 16:33:42.000000000 +0000 ++++ httpd-2.4.4/support/suexec.c 2013-07-11 11:49:54.250178570 +0000 +@@ -240,6 +240,21 @@ static void clean_env(void) environ = cleanenv; } @@ -22,7 +23,7 @@ int main(int argc, char *argv[]) { int userdir = 0; /* ~userdir flag */ -@@ -255,6 +270,7 @@ +@@ -255,6 +270,7 @@ int main(int argc, char *argv[]) char dwd[AP_MAXPATH]; /* docroot working directory */ struct passwd *pw; /* password entry holder */ struct group *gr; /* group entry holder */ @@ -30,7 +31,7 @@ struct stat dir_info; /* directory info holder */ struct stat prg_info; /* program info holder */ -@@ -375,8 +391,23 @@ +@@ -375,8 +391,23 @@ int main(int argc, char *argv[]) } else { if ((pw = getpwuid(atoi(target_uname))) == NULL) { @@ -56,19 +57,41 @@ } } -@@ -558,6 +589,7 @@ - * Error out if the target name/group is different from - * the name/group of the cwd or the program. - */ +@@ -555,20 +586,24 @@ int main(int argc, char *argv[]) + } + + /* +- * Error out if the target name/group is different from +- * the name/group of the cwd or the program. +- */ +- if ((uid != dir_info.st_uid) || +- (gid != dir_info.st_gid) || +- (uid != prg_info.st_uid) || +- (gid != prg_info.st_gid)) { +- log_err("target uid/gid (%lu/%lu) mismatch " +- "with directory (%lu/%lu) or program (%lu/%lu)\n", +- (unsigned long)uid, (unsigned long)gid, +- (unsigned long)dir_info.st_uid, (unsigned long)dir_info.st_gid, +- (unsigned long)prg_info.st_uid, (unsigned long)prg_info.st_gid); +- exit(120); ++ * If not called as suexec.fcgi error out if the target ++ * name/group is different from the name/group of the cwd ++ * or the program. ++ */ + if(strcmp(base_pathname(argv[0]),"suexec.fcgi")) { - if ((uid != dir_info.st_uid) || - (gid != dir_info.st_gid) || - (uid != prg_info.st_uid) || -@@ -569,6 +601,7 @@ - (unsigned long)prg_info.st_uid, (unsigned long)prg_info.st_gid); - exit(120); ++ if ((uid != dir_info.st_uid) || ++ (gid != dir_info.st_gid) || ++ (uid != prg_info.st_uid) || ++ (gid != prg_info.st_gid)) { ++ log_err("target uid/gid (%lu/%lu) mismatch " ++ "with directory (%lu/%lu) or program (%lu/%lu)\n", ++ (unsigned long)uid, (unsigned long)gid, ++ (unsigned long)dir_info.st_uid, (unsigned long)dir_info.st_gid, ++ (unsigned long)prg_info.st_uid, (unsigned long)prg_info.st_gid); ++ exit(120); ++ } } -+ } ++ /* * Error out if the program is not executable for the user. * Otherwise, she won't find any error in the logs except for