Mercurial > trustbridge
view common/util.h @ 773:2c69298b4188
WIP start with tests for Linux binary verification
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Thu, 10 Jul 2014 19:16:21 +0200 |
parents | 4ad764bfb39c |
children | 216a65d7fc4b |
line wrap: on
line source
/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik * Software engineering by Intevation GmbH * * This file is Free Software under the GNU GPL (v>=2) * and comes with ABSOLUTELY NO WARRANTY! * See LICENSE.txt for details. */ #ifndef COMMON_UTIL_H #define COMMON_UTIL_H /* @file util.h * @brief The usual useful stuff that fit nowhere else */ #include <stdbool.h> #ifdef WIN32 #include <windows.h> #include <psapi.h> #endif #ifdef __cplusplus extern "C" { #endif /**@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 on windows and checks effective UID on Linux. * * @returns true if the current process is elevated.*/ bool is_elevated(); /**@brief Check if the user is in the administrators group. * * The function checks if the account that startet this process * belongs to a user that is a member of the Administrators group. * * @returns True if the user is in the admin group. False otherwise or on error. */ bool is_admin(); #ifdef WIN32 /**@brief Get a copy of the processes owner sid * * Copy the SID of the owner of the process hProcess. * * The returned sid structure has to be freed with free by the caller * * @param[in] hProcess A handle to the process whose user should be obtained. * The process must have the PROCESS_QUERY_INFORMATION access permission. * * @returns A copy of the process owners sid or NULL on error. */ PSID get_process_owner(HANDLE hProcess); /**@brief Get the directory in which the current process resides in * * Look up the directory in which the current process is placed. * If the path is longer then MAX_PATH NULL is returned. * * Returns a utf-8 encoded string that has to be freed by the caller * * @returns The directory of the current process */ char * get_install_dir(); #endif #ifdef __cplusplus } #endif #endif // COMMON_UTIL_H