From: Marcin Cieslak Date: Sat, 14 Feb 2015 03:01:09 +0000 (-0600) Subject: Reset done in inc_done() to prevent endless loop when setegid() X-Git-Url: https://diplodocus.org/git/nmh/commitdiff_plain/f71730972165095ceac691c997d55b4c05e99de2?ds=inline;hp=-c Reset done in inc_done() to prevent endless loop when setegid() fails (in which case adios() is called, which calls done()). --- f71730972165095ceac691c997d55b4c05e99de2 diff --git a/uip/inc.c b/uip/inc.c index b4572824..7d128420 100644 --- a/uip/inc.c +++ b/uip/inc.c @@ -137,7 +137,7 @@ static gid_t return_gid; #define TRYDROPGROUPPRIVS() DROPGROUPPRIVS() #define DROPGROUPPRIVS() \ if (setegid(getgid()) != 0) { \ - adios ("setegid", "unable to set group to %ld", (long) getgid()); \ + adios ("setegid", "unable to restore group to %ld", (long) getgid()); \ } #define GETGROUPPRIVS() \ if (setegid(return_gid) != 0) { \ @@ -959,6 +959,7 @@ skip: static void inc_done (int status) { + done = exit; if (packfile && pd != NOTOK) mbx_close (packfile, pd); if (locked)