--- a/innd/innd.c
+++ b/innd/innd.c
@@ -301,10 +301,14 @@ Spawn(fd0, fd1, fd2, av)
 #if	defined(DO_INND_NICE_KIDS)
     (void)nice(INND_NICE_VALUE);
 #endif	/* defined(DO_INND_NICE_KIDS) */
-    if (setgid(NewsGID) == -1)
-	syslog(L_ERROR, "%s cant setgid in %s %m", LogName, av[0]);
-    if (setuid(NewsUID) == -1)
-	syslog(L_ERROR, "%s cant setuid in %s %m", LogName, av[0]);
+    if (setgid(NewsGID) == -1) {
+	syslog(L_FATAL, "%s cant setgid in %s %m", LogName, av[0]);
+	exit(1);
+    }
+    if (setuid(NewsUID) == -1) {
+	syslog(L_FATAL, "%s cant setuid in %s %m", LogName, av[0]);
+	exit(1);
+    }
 
     /* Close the DBZ database without doing any writing. */
     /* Not needed with the patched DBZ; can't be used with vfork.
--- a/innd/inndstart.c
+++ b/innd/inndstart.c
@@ -132,12 +132,14 @@ main(ac, av)
 #endif	/* defined(DEBUGGER) */
 
     /* Set our user and group id. */
-    (void)setgid(NewsGID);
-    if (getgid() != NewsGID)
-	syslog(L_ERROR, "inndstart cant setgid to %d %m", NewsGID);
-    (void)setuid(NewsUID);
-    if (getuid() != NewsUID)
-	syslog(L_ERROR, "inndstart cant setuid to %d %m", NewsUID);
+    if (setgid(NewsGID) == -1) {
+	syslog(L_FATAL, "inndstart cant setgid to %d %m", NewsGID);
+	exit(1);
+    }
+    if (setuid(NewsUID) == -1) {
+	syslog(L_FATAL, "inndstart cant setuid to %d %m", NewsUID);
+	exit(1);
+    }
 
     /* Set up the environment. */
     (void)sprintf(buff, "PATH=%s:%s:/bin:/usr/bin:/usr/ucb",
--- a/actived/actived.c
+++ b/actived/actived.c
@@ -140,10 +140,14 @@ main(argc, argv)
         exit(0);
 
     /* Change our UID and GID */
-    if (setgid(NewsGID) == -1)
-	syslog(L_ERROR, "actived cant setgid: %m");
-    if (setuid(NewsUID) == -1)
-	syslog(L_ERROR, "actived cant setuid: %m");
+    if (setgid(NewsGID) == -1) {
+	syslog(L_FATAL, "actived cant setgid: %m");
+	exit(1);
+    }
+    if (setuid(NewsUID) == -1) {
+	syslog(L_FATAL, "actived cant setuid: %m");
+	exit(1);
+    }
 
     /* Record our PID. */
     pid = getpid();
