Disable UID/GID checks on "single user OS"

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.
This commit is contained in:
Alexander Barton 2012-10-11 14:54:13 +00:00
parent cdaaae0cb2
commit e0da56fc7b
2 changed files with 9 additions and 1 deletions

View 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) {

View 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 */