gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r22787 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r22787 - gnunet/src/transport
Date: Fri, 20 Jul 2012 13:16:52 +0200

Author: grothoff
Date: 2012-07-20 13:16:52 +0200 (Fri, 20 Jul 2012)
New Revision: 22787

Modified:
   gnunet/src/transport/gnunet-helper-transport-wlan.c
Log:
-better fix for perm issue

Modified: gnunet/src/transport/gnunet-helper-transport-wlan.c
===================================================================
--- gnunet/src/transport/gnunet-helper-transport-wlan.c 2012-07-20 11:06:57 UTC 
(rev 22786)
+++ gnunet/src/transport/gnunet-helper-transport-wlan.c 2012-07-20 11:16:52 UTC 
(rev 22787)
@@ -1869,36 +1869,10 @@
   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 @@
     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;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]