diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,6 +31,12 @@ IconThemes ) +include(CheckIncludeFile) +include(CheckSymbolExists) +check_include_file("sys/prctl.h" HAVE_SYS_PRCTL_H) +check_symbol_exists(PR_SET_DUMPABLE "sys/prctl.h" HAVE_PR_SET_DUMPABLE) +add_feature_info("prctl-dumpable" HAVE_PR_SET_DUMPABLE "Required for disallow ptrace on polkit agent") + # create config file configure_file (config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) diff --git a/config.h.cmake b/config.h.cmake --- a/config.h.cmake +++ b/config.h.cmake @@ -5,4 +5,7 @@ #define POLKIT_KDE_1_VERSION "${PROJECT_VERSION}" +#cmakedefine01 HAVE_SYS_PRCTL_H +#cmakedefine01 HAVE_PR_SET_DUMPABLE + #endif diff --git a/main.cpp b/main.cpp --- a/main.cpp +++ b/main.cpp @@ -29,8 +29,17 @@ #include "policykitkde.h" +#if HAVE_SYS_PRCTL_H +#include +#endif + int main(int argc, char *argv[]) { + // disable ptrace +#if HAVE_PR_SET_DUMPABLE + prctl(PR_SET_DUMPABLE, 0); +#endif + KLocalizedString::setApplicationDomain("polkit-kde-authentication-agent-1"); KAboutData aboutData("polkit-kde-authentication-agent-1", i18n("PolicyKit1 KDE Agent"), POLKIT_KDE_1_VERSION); aboutData.addLicense(KAboutLicense::GPL);