From 3d1a5932297c8b6cd6acc9fcb5876c1db5a66a00 Mon Sep 17 00:00:00 2001 From: Andreas Hrubak Date: Thu, 21 Apr 2022 01:25:36 +0200 Subject: [PATCH] footgun was shot --- src/Makefile | 4 ++++ src/xopenhook.c | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Makefile b/src/Makefile index 4978c45..ef4bf06 100644 --- a/src/Makefile +++ b/src/Makefile @@ -78,3 +78,7 @@ connredir.so: autossl.so: gcc $(CCFLAGS) $(basename $@).c -D_GNU_SOURCE -ldl -lbsd -shared -fPIC -o $@ chmod -x $@ + +xopenhook.so: + gcc $(CCFLAGS) $(basename $@).c -D_GNU_SOURCE -ldl -shared -fPIC -o $@ + chmod -x $@ diff --git a/src/xopenhook.c b/src/xopenhook.c index 045262d..020790d 100644 --- a/src/xopenhook.c +++ b/src/xopenhook.c @@ -13,6 +13,14 @@ Display* XOpenDisplay(const char * display_name) { Display* (*real_XOpenDisplay)(const char *) = dlsym(RTLD_NEXT, "XOpenDisplay"); Display* display_handle = real_XOpenDisplay(display_name); - if(display_handle != NULL) system(getenv("XOPENHOOK_COMMAND")); + + char * xopenhook_enable = getenv("XOPENHOOK_ENABLE"); + if(xopenhook_enable != NULL && strcmp(xopenhook_enable, "1")==0) + { + unsetenv("XOPENHOOK_ENABLE"); + if(display_handle != NULL) system(getenv("XOPENHOOK_COMMAND")); + setenv("XOPENHOOK_ENABLE", xopenhook_enable, 1); + } + return display_handle; } -- 2.11.4.GIT