changing type
[oweals/gnunet.git] / src / transport / gnunet-helper-transport-wlan.c
index cc3891b02f21de02f7f5cdf75c6de06532d56bf5..2edd171f48c2f3e72131e650966be0848af98e44 100644 (file)
@@ -1869,36 +1869,10 @@ main (int argc, char *argv[])
   int raw_eno;
 
   /* make use of SGID capabilities on POSIX */
-  /* FIXME: this might need a port on systems without 'getresgid' */
-  if (-1 ==  setreuid (0, 0))
-    fprintf (stderr, "setreuid failed: %s\n", strerror (errno));
-
   memset (&dev, 0, sizeof (dev));
   dev.fd_raw = socket (PF_PACKET, SOCK_RAW, htons (ETH_P_ALL));
   raw_eno = errno; /* remember for later */
 
-  /* drop privs */
-  {
-    uid_t uid = getuid ();
-#ifdef HAVE_SETRESUID
-    if (0 != setresuid (uid, uid, uid))
-    {
-      fprintf (stderr, "Failed to setresuid: %s\n", strerror (errno));
-      if (-1 != dev.fd_raw)
-       (void) close (dev.fd_raw);
-      return 1;
-    }
-#else
-    if (0 != (setuid (uid) | seteuid (uid)))
-    {
-      fprintf (stderr, "Failed to setuid: %s\n", strerror (errno));
-      if (-1 != dev.fd_raw)
-       (void) close (dev.fd_raw);
-      return 1;
-    }
-  }
-#endif
-
   /* now that we've dropped root rights, we can do error checking */
   if (2 != argc)
   {
@@ -1933,6 +1907,29 @@ main (int argc, char *argv[])
     return 1;
   }
 
+  /* drop privs */
+  {
+    uid_t uid = getuid ();
+#ifdef HAVE_SETRESUID
+    if (0 != setresuid (uid, uid, uid))
+    {
+      fprintf (stderr, "Failed to setresuid: %s\n", strerror (errno));
+      if (-1 != dev.fd_raw)
+       (void) close (dev.fd_raw);
+      return 1;
+    }
+#else
+    if (0 != (setuid (uid) | seteuid (uid)))
+    {
+      fprintf (stderr, "Failed to setuid: %s\n", strerror (errno));
+      if (-1 != dev.fd_raw)
+       (void) close (dev.fd_raw);
+      return 1;
+    }
+  }
+#endif
+
+
   /* send MAC address of the WLAN interface to STDOUT first */
   {
     struct GNUNET_TRANSPORT_WLAN_HelperControlMessage macmsg;