# HG changeset patch # User Sascha Wilde # Date 1396869634 -7200 # Node ID 31ba7ed4d50fc14420db11cb7c4353c71d68cf5d # Parent e30c9fee111ada822ad17a928d527f1a613d9779 Made is_elevated portable. diff -r e30c9fee111a -r 31ba7ed4d50f common/util.c --- a/common/util.c Mon Apr 07 13:11:48 2014 +0200 +++ b/common/util.c Mon Apr 07 13:20:34 2014 +0200 @@ -1,26 +1,32 @@ #include "util.h" -#ifdef WIN32 +#ifndef _WIN32 +#include +#include +#else #include #endif -#ifdef WIN32 bool -is_elevated() { - HANDLE hToken = NULL; - bool ret = false; - if (OpenProcessToken (GetCurrentProcess(), TOKEN_QUERY, &hToken)) - { - DWORD elevation; - DWORD cbSize = sizeof (DWORD); - if (GetTokenInformation (hToken, TokenElevation, &elevation, - sizeof (TokenElevation), &cbSize)) - { - ret = elevation; - } - } - if (hToken) - CloseHandle (hToken); +is_elevated() +{ + bool ret = false; +#ifndef _WIN32 + ret = (geteuid() == 0); +#else + HANDLE hToken = NULL; + if (OpenProcessToken (GetCurrentProcess(), TOKEN_QUERY, &hToken)) + { + DWORD elevation; + DWORD cbSize = sizeof (DWORD); + if (GetTokenInformation (hToken, TokenElevation, &elevation, + sizeof (TokenElevation), &cbSize)) + { + ret = elevation; + } + } + if (hToken) + CloseHandle (hToken); +#endif + return ret; +} - return ret; -} -#endif diff -r e30c9fee111a -r 31ba7ed4d50f common/util.h --- a/common/util.h Mon Apr 07 13:11:48 2014 +0200 +++ b/common/util.h Mon Apr 07 13:20:34 2014 +0200 @@ -5,13 +5,12 @@ */ #include -#ifdef WIN32 /**@brief Check if the current process is running with elevated privileges. * * Elevates the current process token to check if it is marked as elevated. - * Uses TokenElevation. + * Uses TokenElevation on windows and checks effective UID on Linux. * * @returns true if the current process is elevated.*/ bool is_elevated(); -#endif + #endif // COMMON_UTIL_H