diff options
author | Christian Grothoff <christian@grothoff.org> | 2012-11-16 16:05:25 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2012-11-16 16:05:25 +0000 |
commit | 831c023aa4b58783bfd3bfc5af895dc2beb61761 (patch) | |
tree | 0a350454289de3faf5724926ccd54da2e7cfe0bc /src/transport/gnunet-helper-transport-wlan.c | |
parent | bfa39dc4777fef5d3c0ebf9fe54472daf4b8fd5a (diff) | |
download | gnunet-831c023aa4b58783bfd3bfc5af895dc2beb61761.tar.gz gnunet-831c023aa4b58783bfd3bfc5af895dc2beb61761.zip |
-assert privs when needed
Diffstat (limited to 'src/transport/gnunet-helper-transport-wlan.c')
-rw-r--r-- | src/transport/gnunet-helper-transport-wlan.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/transport/gnunet-helper-transport-wlan.c b/src/transport/gnunet-helper-transport-wlan.c index 0343b161b..649a6cf18 100644 --- a/src/transport/gnunet-helper-transport-wlan.c +++ b/src/transport/gnunet-helper-transport-wlan.c | |||
@@ -1867,6 +1867,22 @@ main (int argc, char *argv[]) | |||
1867 | struct MessageStreamTokenizer *stdin_mst; | 1867 | struct MessageStreamTokenizer *stdin_mst; |
1868 | int raw_eno; | 1868 | int raw_eno; |
1869 | 1869 | ||
1870 | /* assert privs so we can modify the firewall rules! */ | ||
1871 | uid = getuid (); | ||
1872 | #ifdef HAVE_SETRESUID | ||
1873 | if (0 != setresuid (uid, 0, 0)) | ||
1874 | { | ||
1875 | fprintf (stderr, "Failed to setresuid to root: %s\n", strerror (errno)); | ||
1876 | return 254; | ||
1877 | } | ||
1878 | #else | ||
1879 | if (0 != seteuid (0)) | ||
1880 | { | ||
1881 | fprintf (stderr, "Failed to seteuid back to root: %s\n", strerror (errno)); | ||
1882 | return 254; | ||
1883 | } | ||
1884 | #endif | ||
1885 | |||
1870 | /* make use of SGID capabilities on POSIX */ | 1886 | /* make use of SGID capabilities on POSIX */ |
1871 | memset (&dev, 0, sizeof (dev)); | 1887 | memset (&dev, 0, sizeof (dev)); |
1872 | dev.fd_raw = socket (PF_PACKET, SOCK_RAW, htons (ETH_P_ALL)); | 1888 | dev.fd_raw = socket (PF_PACKET, SOCK_RAW, htons (ETH_P_ALL)); |