commit e0da56fc7b1dae4e21dfda7e0ac8ad7594135986 from: Alexander Barton date: Thu Oct 11 14:54:13 2012 UTC 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. commit - cdaaae0cb2c2b30db8bb61506a826ff87c58f7c8 commit + e0da56fc7b1dae4e21dfda7e0ac8ad7594135986 blob - 50d91ce8e2dbff20c87e9dc54505e0bac3406019 blob + f016b6aa88e9a4a4de167d78e02dea523c51e32b --- src/ngircd/ngircd.c +++ src/ngircd/ngircd.c @@ -565,7 +565,9 @@ Setup_FDStreams(int fd) /* Create new stdin(0), stdout(1) and stderr(2) descriptors */ dup2( fd, 0 ); dup2( fd, 1 ); dup2( fd, 2 ); } /* Setup_FDStreams */ + +#if !defined(SINGLE_USER_OS) /** * Get user and group ID of unprivileged "nobody" user. @@ -605,6 +607,8 @@ NGIRCd_getNobodyID(uid_t *uid, gid_t *gid ) return true; } /* NGIRCd_getNobodyID */ + +#endif static bool @@ -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) { blob - 1c6e3f852aaa02c5b4cbb398803ba9c114ec35b4 blob + 208d3500342a1d2aba40b07a7eee0af9a4ec98c3 --- src/portab/portab.h +++ src/portab/portab.h @@ -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 */