diff options
Diffstat (limited to 'src/transport/gnunet-helper-transport-wlan.c')
-rw-r--r-- | src/transport/gnunet-helper-transport-wlan.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/transport/gnunet-helper-transport-wlan.c b/src/transport/gnunet-helper-transport-wlan.c index 8a978c218..cbe0dae77 100644 --- a/src/transport/gnunet-helper-transport-wlan.c +++ b/src/transport/gnunet-helper-transport-wlan.c | |||
@@ -1923,23 +1923,28 @@ main (int argc, char *argv[]) | |||
1923 | int stdin_open; | 1923 | int stdin_open; |
1924 | struct MessageStreamTokenizer *stdin_mst; | 1924 | struct MessageStreamTokenizer *stdin_mst; |
1925 | int raw_eno; | 1925 | int raw_eno; |
1926 | uid_t uid; | ||
1927 | 1926 | ||
1928 | /* assert privs so we can modify the firewall rules! */ | 1927 | /* assert privs so we can modify the firewall rules! */ |
1929 | uid = getuid (); | ||
1930 | #ifdef HAVE_SETRESUID | ||
1931 | if (0 != setresuid (uid, 0, 0)) | ||
1932 | { | 1928 | { |
1933 | fprintf (stderr, "Failed to setresuid to root: %s\n", strerror (errno)); | 1929 | #ifdef HAVE_SETRESUID |
1934 | return 254; | 1930 | uid_t uid = getuid (); |
1935 | } | 1931 | |
1932 | if (0 != setresuid (uid, 0, 0)) | ||
1933 | { | ||
1934 | fprintf (stderr, | ||
1935 | "Failed to setresuid to root: %s\n", | ||
1936 | strerror (errno)); | ||
1937 | return 254; | ||
1938 | } | ||
1936 | #else | 1939 | #else |
1937 | if (0 != seteuid (0)) | 1940 | if (0 != seteuid (0)) |
1938 | { | 1941 | { |
1939 | fprintf (stderr, "Failed to seteuid back to root: %s\n", strerror (errno)); | 1942 | fprintf (stderr, |
1940 | return 254; | 1943 | "Failed to seteuid back to root: %s\n", strerror (errno)); |
1941 | } | 1944 | return 254; |
1945 | } | ||
1942 | #endif | 1946 | #endif |
1947 | } | ||
1943 | 1948 | ||
1944 | /* make use of SGID capabilities on POSIX */ | 1949 | /* make use of SGID capabilities on POSIX */ |
1945 | memset (&dev, 0, sizeof (dev)); | 1950 | memset (&dev, 0, sizeof (dev)); |