]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/ngircd.c
Fix use-after-free while handling ERROR during client login
[ngircd-alex.git] / src / ngircd / ngircd.c
index 1b20597d8aa26cf7dbd0c2e490786ea910bab8d5..76977080879ff07492868b6a8e3e74266c165f1f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
+ * Copyright (c)2001-2018 Alexander Barton (alex@barton.de) and Contributors.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -451,7 +451,7 @@ static void
 Show_Version( void )
 {
        puts( NGIRCd_Version );
-       puts( "Copyright (c)2001-2014 Alexander Barton (<alex@barton.de>) and Contributors." );
+       puts( "Copyright (c)2001-2018 Alexander Barton (<alex@barton.de>) and Contributors." );
        puts( "Homepage: <http://ngircd.barton.de/>\n" );
        puts( "This is free software; see the source for copying conditions. There is NO" );
        puts( "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." );
@@ -530,7 +530,7 @@ Pidfile_Create(pid_t pid)
                close(pidfd);
                return;
        }
-       
+
        if (write(pidfd, pidbuf, (size_t)len) != (ssize_t)len)
                Log(LOG_ERR, "Can't write PID file (%s): %s!", Conf_PidFile,
                    strerror(errno));
@@ -721,9 +721,10 @@ NGIRCd_Init(bool NGIRCd_NoDaemon)
                        Log(LOG_ERR, "Can't change group ID to %s(%u): %s!",
                            grp ? grp->gr_name : "?", Conf_GID,
                            strerror(real_errno));
-                       if (real_errno != EPERM) 
+                       if (real_errno != EPERM)
                                goto out;
                }
+#ifdef HAVE_SETGROUPS
                if (setgroups(0, NULL) != 0) {
                        real_errno = errno;
                        Log(LOG_ERR, "Can't drop supplementary group IDs: %s!",
@@ -731,6 +732,10 @@ NGIRCd_Init(bool NGIRCd_NoDaemon)
                        if (real_errno != EPERM)
                                goto out;
                }
+#else
+               Log(LOG_WARNING,
+                   "Can't drop supplementary group IDs: setgroups(3) missing!");
+#endif
        }
 #endif