aboutsummaryrefslogtreecommitdiffstats
path: root/www/suphp/files/patch-suphp.c
blob: 5ea6bf32dcd177bbd039415a400eb583a803afe9 (plain) (blame)
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
--- suphp.c.orig    Wed Dec 25 14:21:27 2002
+++ suphp.c Sat Jun 28 12:02:12 2003
@@ -68,6 +68,7 @@
 {
  // Check, if program has been started by Apache
  struct passwd *apacheuser;
+ struct group *apachegroup;
  struct passwd *calluser;
  struct passwd *targetuser;
  struct group *targetgroup;
@@ -76,6 +77,7 @@
  path_translated = getenv("SCRIPT_FILENAME");
   
  apacheuser = getpwnam(OPT_APACHE_USER);
+ apachegroup = getgrnam(OPT_APACHE_GROUP);
  calluser = getpwuid(getuid());
  
  if (calluser->pw_uid!=apacheuser->pw_uid)
@@ -105,13 +107,13 @@
  
  // Get gid and uid of the file and check it
  targetuser = getpwuid(file_get_uid(path_translated));
- if (targetuser->pw_uid < OPT_MIN_UID)
+ if (targetuser->pw_uid < OPT_MIN_UID && targetuser->pw_uid != apacheuser->pw_uid )
  {
   log_error ("UID of %s or its target (%d / %s) < %d", path_translated, targetuser->pw_uid, targetuser->pw_name, OPT_MIN_UID);
   error_exit(ERRCODE_LOW_UID);
  }
  targetgroup = getgrgid(file_get_gid(path_translated));
- if (targetgroup->gr_gid < OPT_MIN_GID)
+ if (targetgroup->gr_gid < OPT_MIN_GID && targetgroup->gr_gid != apachegroup->gr_gid )
  {
   log_error ("GID of %s or its target (%d / %s) < %d", path_translated, targetgroup->gr_gid, targetgroup->gr_name, OPT_MIN_GID);
   error_exit(ERRCODE_LOW_GID);