From: Christoph Egger Date: Mon, 25 May 2015 05:23:35 +0000 (+0200) Subject: Use protected domainsocket for geiser X-Git-Tag: v0.2~14 X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=commitdiff_plain;h=25c5224fd78d69d669d4f2722ffd2f512a65834e;ds=sidebyside Use protected domainsocket for geiser Instead of opening a TCP port on localhost, use a UNIX domainsocket to listen for connections. This way frida is properly protected against other users on the same system. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index b793c67..8c7fad6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -119,7 +119,7 @@ set(plugin_guile_HEADERS src/bindings/Guile.hxx) add_library(guilePlugin MODULE ${plugin_guile_SOURCES} ${plugin_guile_HEADERS_MOC}) -qt5_use_modules(guilePlugin Core) +qt5_use_modules(guilePlugin Core Widgets) target_link_libraries(guilePlugin ${QT_LIBRARIES} ${GUILE_LDFLAGS}) ################## diff --git a/src/bindings/Guile.cxx b/src/bindings/Guile.cxx index 356757d..d4295c4 100644 --- a/src/bindings/Guile.cxx +++ b/src/bindings/Guile.cxx @@ -1,5 +1,6 @@ #include "Guile.hxx" #include "Config.hxx" +#include "core/Settings.hxx" namespace { SCM handler (void*, SCM tag, SCM throw_args) { @@ -10,10 +11,17 @@ namespace { GuileInterpreter::GuileInterpreter() : logger(log4cxx::Logger::getLogger("bindings.Guile")) { + + QString socketpath = Settings::get()->getRuntimeDirectory()->canonicalPath() + + "/frida." + QString::number(QCoreApplication::applicationPid(), 16) + ".geiser.sock"; + scm_init_guile(); + SCM scm_socketpath = scm_from_locale_string(socketpath.toStdString().c_str()); scm_c_use_module("system repl server"); - scm_call_0(scm_c_public_ref("system repl server", "spawn-server")); + SCM socket = scm_call_2(scm_c_public_ref("system repl server", "make-unix-domain-server-socket"), + scm_from_locale_keyword("path"), scm_socketpath); + scm_call_1(scm_c_public_ref("system repl server", "spawn-server"), socket); scm_c_load_extension("libguile-frida-binding", "scm_init_frida_module");