]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: only drop uid/gid when needed
authorPieter Lexis <pieter.lexis@powerdns.com>
Mon, 13 May 2019 15:45:37 +0000 (17:45 +0200)
committerPieter Lexis <pieter.lexis@powerdns.com>
Tue, 14 May 2019 11:24:52 +0000 (13:24 +0200)
pdns/dnsdist.cc

index deea14b769773f257d3de6990addd65c2d4c1e97..98d646d54f73515a3357e5c4f677136ee52e2d06 100644 (file)
@@ -2650,8 +2650,8 @@ try
   }
 #endif
 
-  uid_t newgid=0;
-  gid_t newuid=0;
+  uid_t newgid=getegid();
+  gid_t newuid=geteuid();
 
   if(!g_cmdLine.gid.empty())
     newgid = strToGID(g_cmdLine.gid.c_str());
@@ -2659,8 +2659,11 @@ try
   if(!g_cmdLine.uid.empty())
     newuid = strToUID(g_cmdLine.uid.c_str());
 
-  dropGroupPrivs(newgid);
-  dropUserPrivs(newuid);
+  if (getegid() != newgid)
+    dropGroupPrivs(newgid);
+  if (geteuid() != newuid)
+    dropUserPrivs(newuid);
+
   try {
     /* we might still have capabilities remaining,
        for example if we have been started as root