From a5d6aecaeb8fac43d885d5e8cfad3d33b8f271b4 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Fri, 20 Jul 2012 11:16:52 +0000 Subject: [PATCH] -better fix for perm issue --- src/transport/gnunet-helper-transport-wlan.c | 49 +++++++++----------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/src/transport/gnunet-helper-transport-wlan.c b/src/transport/gnunet-helper-transport-wlan.c index cc3891b02..2edd171f4 100644 --- a/src/transport/gnunet-helper-transport-wlan.c +++ b/src/transport/gnunet-helper-transport-wlan.c @@ -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; -- 2.25.1