1 diff -durN inn-2.4.0.orig/expire/expire.c inn-2.4.0/expire/expire.c
2 --- inn-2.4.0.orig/expire/expire.c Fri May 9 06:25:27 2003
3 +++ inn-2.4.0/expire/expire.c Fri Dec 5 09:50:12 2003
18 pwd = getpwnam(NEWSUSER);
20 die("can't resolve %s to a UID (account doesn't exist?)", NEWSUSER);
22 + grp = getgrnam(NEWSGRP);
24 + die("can't resolve %s to a GID (account doesn't exist?)", NEWSGRP);
25 + if (getuid() == 0) {
26 + setgid(grp->gr_gid);
27 + initgroups(pwd->pw_name,grp->gr_gid);
30 if (getuid() != pwd->pw_uid)
31 die("must be run as %s", NEWSUSER);
33 diff -durN inn-2.4.0.orig/expire/expireover.c inn-2.4.0/expire/expireover.c
34 --- inn-2.4.0.orig/expire/expireover.c Fri May 9 06:25:27 2003
35 +++ inn-2.4.0/expire/expireover.c Fri Dec 5 09:50:22 2003
50 pwd = getpwnam(NEWSUSER);
52 die("can't resolve %s to a UID (account doesn't exist?)", NEWSUSER);
54 + grp = getgrnam(NEWSGRP);
56 + die("can't resolve %s to a GID (account doesn't exist?)", NEWSGRP);
57 + if (getuid() == 0) {
58 + setgid(grp->gr_gid);
59 + initgroups(pwd->pw_name,grp->gr_gid);
62 if (getuid() != pwd->pw_uid)
63 die("must be run as %s", NEWSUSER);
65 diff -durN inn-2.4.0.orig/expire/makedbz.c inn-2.4.0/expire/makedbz.c
66 --- inn-2.4.0.orig/expire/makedbz.c Fri May 9 06:25:27 2003
67 +++ inn-2.4.0/expire/makedbz.c Fri Dec 5 09:50:35 2003
82 pwd = getpwnam(NEWSUSER);
84 die("can't resolve %s to a UID (account doesn't exist?)", NEWSUSER);
86 + grp = getgrnam(NEWSGRP);
88 + die("can't resolve %s to a GID (account doesn't exist?)", NEWSGRP);
89 + if (getuid() == 0) {
90 + setgid(grp->gr_gid);
91 + initgroups(pwd->pw_name,grp->gr_gid);
94 if (getuid() != pwd->pw_uid)
95 die("must be run as %s", NEWSUSER);
100 main(int argc, char **argv)
102 diff -durN inn-2.4.0.orig/expire/makehistory.c inn-2.4.0/expire/makehistory.c
103 --- inn-2.4.0.orig/expire/makehistory.c Fri May 9 06:25:27 2003
104 +++ inn-2.4.0/expire/makehistory.c Fri Dec 5 09:50:52 2003
112 #include "inn/buffer.h"
113 @@ -714,17 +715,23 @@
119 pwd = getpwnam(NEWSUSER);
121 die("can't resolve %s to a UID (account doesn't exist?)", NEWSUSER);
123 + grp = getgrnam(NEWSGRP);
125 + die("can't resolve %s to a GID (account doesn't exist?)", NEWSGRP);
126 + if (getuid() == 0) {
127 + setgid(grp->gr_gid);
128 + initgroups(pwd->pw_name,grp->gr_gid);
131 if (getuid() != pwd->pw_uid)
132 die("must be run as %s", NEWSUSER);
137 main(int argc, char **argv)
139 diff -durN inn-2.4.0.orig/innd/inndstart.c inn-2.4.0/innd/inndstart.c
140 --- inn-2.4.0.orig/innd/inndstart.c Fri May 9 06:25:27 2003
141 +++ inn-2.4.0/innd/inndstart.c Fri Dec 5 09:49:45 2003
143 /* Now, permanently drop privileges. */
144 if (setgid(news_gid) < 0 || getgid() != news_gid)
145 sysdie("can't setgid to %lu", (unsigned long)news_gid);
146 + initgroups(NEWSUSER,news_gid);
147 if (setuid(news_uid) < 0 || getuid() != news_uid)
148 sysdie("can't setuid to %lu", (unsigned long)news_uid);
150 diff -durN inn-2.4.0.orig/innfeed/startinnfeed.c inn-2.4.0/innfeed/startinnfeed.c
151 --- inn-2.4.0.orig/innfeed/startinnfeed.c Fri May 9 06:25:27 2003
152 +++ inn-2.4.0/innfeed/startinnfeed.c Fri Dec 5 09:49:45 2003
154 #endif /* HAVE_SETRLIMIT */
156 /* Permanently drop privileges. */
157 + if (setgid(news_gid) < 0 || getgid() != news_gid)
158 + sysdie("can't setgid to %lu", (unsigned long) news_gid);
159 + initgroups(NEWSUSER,news_gid);
160 if (setuid(news_uid) < 0 || getuid() != news_uid)
161 sysdie("can't setuid to %lu", (unsigned long) news_uid);