Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates-src > by-pkgid > a2357cee20ff3ae57da1dc3e9ed2fdd5 > files > 1

rwall-0.17-32.fc14.src.rpm

diff -up netkit-rwall-0.17/rpc.rwalld/rwalld.c.debug netkit-rwall-0.17/rpc.rwalld/rwalld.c
--- netkit-rwall-0.17/rpc.rwalld/rwalld.c.debug	2011-08-01 15:22:08.886396602 +0200
+++ netkit-rwall-0.17/rpc.rwalld/rwalld.c	2011-08-01 15:22:08.901396602 +0200
@@ -90,20 +90,6 @@ main(int argc, char *argv[])
 		exit(1);
 	}
 
-	if (getuid() == 0 || geteuid() == 0) {
-		struct passwd *pwd = getpwnam("nobody");
-		if (pwd) {
-			initgroups(pwd->pw_name, pwd->pw_gid);
-			setgid(pwd->pw_gid);
-			setuid(pwd->pw_uid);
-		}
-		seteuid(0);  /* this should fail */
-		if (getuid() == 0 || geteuid() == 0) {
-			syslog(LOG_CRIT, "can't drop root privileges");
-			exit(1);
-		}
-	}
-
         /*
          * See if inetd started us
          */
@@ -153,6 +139,22 @@ main(int argc, char *argv[])
 		(void)fprintf(stderr, "unable to register (WALLPROG, WALLVERS, udp).\n");
 		exit(1);
 	}
+
+	/* Drop privilege */
+	if (getuid() == 0 || geteuid() == 0) {
+		struct passwd *pwd = getpwnam("nobody");
+		if (pwd) {
+			initgroups(pwd->pw_name, pwd->pw_gid);
+			setgid(pwd->pw_gid);
+			setuid(pwd->pw_uid);
+		}
+		seteuid(0);  /* this should fail */
+		if (getuid() == 0 || geteuid() == 0) {
+			syslog(LOG_CRIT, "can't drop root privileges");
+			exit(1);
+		}
+	}
+
 	svc_run();
 	(void)fprintf(stderr, "svc_run returned\n");
 	exit(1);