]> arthur.barton.de Git - ngircd-alex.git/commitdiff
Disable UID/GID checks on "single user OS"
authorAlexander Barton <alex@barton.de>
Thu, 11 Oct 2012 14:54:13 +0000 (14:54 +0000)
committerAlexander Barton <alex@barton.de>
Thu, 11 Oct 2012 14:54:13 +0000 (14:54 +0000)
Don't abort on "single user operating systems" that don't know more than
one user account and therefore can't change user and group IDs.

Currently, the only such system supported by ngIRCd is Haiku, a BeOS
clone.

src/ngircd/ngircd.c
src/portab/portab.h

index 50d91ce8e2dbff20c87e9dc54505e0bac3406019..f016b6aa88e9a4a4de167d78e02dea523c51e32b 100644 (file)
@@ -567,6 +567,8 @@ Setup_FDStreams(int fd)
 } /* Setup_FDStreams */
 
 
+#if !defined(SINGLE_USER_OS)
+
 /**
  * Get user and group ID of unprivileged "nobody" user.
  *
@@ -606,6 +608,8 @@ NGIRCd_getNobodyID(uid_t *uid, gid_t *gid )
        return true;
 } /* NGIRCd_getNobodyID */
 
+#endif
+
 
 static bool
 Random_Init_Kern(const char *file)
@@ -692,6 +696,7 @@ NGIRCd_Init(bool NGIRCd_NoDaemon)
                }
        }
 
+#if !defined(SINGLE_USER_OS)
        /* Check user ID */
        if (Conf_UID == 0) {
                pwd = getpwuid(0);
@@ -718,6 +723,7 @@ NGIRCd_Init(bool NGIRCd_NoDaemon)
                                goto out;
                }
        }
+#endif
 
        /* Change user ID */
        if (getuid() != Conf_UID) {
index 1c6e3f852aaa02c5b4cbb398803ba9c114ec35b4..208d3500342a1d2aba40b07a7eee0af9a4ec98c3 100644 (file)
@@ -112,7 +112,6 @@ typedef unsigned char bool;
 
 /* SPLint */
 
-
 #ifdef S_SPLINT_S
 #include "splint.h"
 #endif
@@ -132,6 +131,9 @@ typedef unsigned char bool;
 #define HOST_VENDOR "unknown"
 #endif
 
+#ifdef __HAIKU__
+#define SINGLE_USER_OS
+#endif
 
 /* configure options */