From 122f91bd413df1606a03050808ead4a7306101ef Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 29 Apr 2018 22:16:54 +0300 Subject: [PATCH] gnu: enlightenment: Fix setuid program locations. * gnu/packages/enlightenment.scm (enlightenment)[source]: Add patch. * gnu/packages/patches/enlightenment-fix-setuid-path.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. --- gnu/local.mk | 1 + gnu/packages/enlightenment.scm | 3 +- .../enlightenment-fix-setuid-path.patch | 168 ++++++++++++++++++ 3 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/enlightenment-fix-setuid-path.patch diff --git a/gnu/local.mk b/gnu/local.mk index fbdb309896..20975306b2 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -647,6 +647,7 @@ dist_patch_DATA = \ %D%/packages/patches/emacs-highlight-stages-add-gexp.patch \ %D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch \ %D%/packages/patches/emacs-source-date-epoch.patch \ + %D%/packages/patches/enlightenment-fix-setuid-path.patch \ %D%/packages/patches/erlang-man-path.patch \ %D%/packages/patches/eudev-rules-directory.patch \ %D%/packages/patches/evilwm-lost-focus-bug.patch \ diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index d6c11e4fec..54205978a5 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -262,7 +262,8 @@ Libraries with some extra bells and whistles.") name "/" name "-" version ".tar.xz")) (sha256 (base32 - "16zydv7z94aw3rywmb9gr8ya85k7b75h22wng95lfx1x0y1yb0ad")))) + "16zydv7z94aw3rywmb9gr8ya85k7b75h22wng95lfx1x0y1yb0ad")) + (patches (search-patches "enlightenment-fix-setuid-path.patch")))) (build-system gnu-build-system) (arguments `(#:phases diff --git a/gnu/packages/patches/enlightenment-fix-setuid-path.patch b/gnu/packages/patches/enlightenment-fix-setuid-path.patch new file mode 100644 index 0000000000..90e16d3e67 --- /dev/null +++ b/gnu/packages/patches/enlightenment-fix-setuid-path.patch @@ -0,0 +1,168 @@ +diff --git a/src/bin/e_auth.c b/src/bin/e_auth.c +index 00b0e5d84..98ab4518f 100644 +--- a/src/bin/e_auth.c ++++ b/src/bin/e_auth.c +@@ -9,8 +9,7 @@ e_auth_begin(char *passwd) + + if (strlen(passwd) == 0) goto out; + +- snprintf(buf, sizeof(buf), "%s/enlightenment/utils/enlightenment_ckpasswd", +- e_prefix_lib_get()); ++ snprintf(buf, sizeof(buf), "/run/setuid-programs/enlightenment_ckpasswd"); + + exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL); + if (ecore_exe_send(exe, passwd, strlen(passwd)) != EINA_TRUE) goto out; +diff --git a/src/bin/e_backlight.c b/src/bin/e_backlight.c +index 2bced6766..208e583ba 100644 +--- a/src/bin/e_backlight.c ++++ b/src/bin/e_backlight.c +@@ -521,8 +521,8 @@ _bl_sys_level_set(double val) + } + // fprintf(stderr, "SET: %1.3f\n", val); + snprintf(buf, sizeof(buf), +- "%s/enlightenment/utils/enlightenment_backlight %i %s", +- e_prefix_lib_get(), (int)(val * 1000.0), bl_sysval); ++ "/run/setuid-programs/enlightenment_backlight %i %s", ++ (int)(val * 1000.0), bl_sysval); + bl_sys_set_exe = ecore_exe_run(buf, NULL); + } + #endif // HAVE_EEZE || __FreeBSD_kernel__ +diff --git a/src/bin/e_fm/e_fm_main_eeze.c b/src/bin/e_fm/e_fm_main_eeze.c +index b7d9e3eba..d8a9eb82c 100644 +--- a/src/bin/e_fm/e_fm_main_eeze.c ++++ b/src/bin/e_fm/e_fm_main_eeze.c +@@ -318,7 +318,7 @@ _e_fm_main_eeze_volume_eject(E_Volume *v) + { + char buf[PATH_MAX]; + +- snprintf(buf, sizeof(buf), "%s/enlightenment/utils/enlightenment_sys", eina_prefix_lib_get(pfx)); ++ snprintf(buf, sizeof(buf), "/run/setuid-programs/enlightenment_sys"); + eeze_disk_mount_wrapper_set(v->disk, buf); + } + v->guard = ecore_timer_loop_add(E_FM_EJECT_TIMEOUT, (Ecore_Task_Cb)_e_fm_main_eeze_vol_eject_timeout, v); +@@ -512,7 +512,7 @@ _e_fm_main_eeze_volume_unmount(E_Volume *v) + { + char buf[PATH_MAX]; + +- snprintf(buf, sizeof(buf), "%s/enlightenment/utils/enlightenment_sys", eina_prefix_lib_get(pfx)); ++ snprintf(buf, sizeof(buf), "/run/setuid-programs/enlightenment_sys"); + eeze_disk_mount_wrapper_set(v->disk, buf); + } + v->guard = ecore_timer_loop_add(E_FM_UNMOUNT_TIMEOUT, (Ecore_Task_Cb)_e_fm_main_eeze_vol_unmount_timeout, v); +@@ -548,7 +548,7 @@ _e_fm_main_eeze_volume_mount(E_Volume *v) + { + char buf2[PATH_MAX]; + +- snprintf(buf2, sizeof(buf2), "%s/enlightenment/utils/enlightenment_sys", eina_prefix_lib_get(pfx)); ++ snprintf(buf2, sizeof(buf2), "/run/setuid-programs/enlightenment_sys"); + eeze_disk_mount_wrapper_set(v->disk, buf2); + } + v->guard = ecore_timer_loop_add(E_FM_MOUNT_TIMEOUT, (Ecore_Task_Cb)_e_fm_main_eeze_vol_mount_timeout, v); +diff --git a/src/bin/e_sys.c b/src/bin/e_sys.c +index 6781a9b5a..8cd140f1b 100644 +--- a/src/bin/e_sys.c ++++ b/src/bin/e_sys.c +@@ -653,20 +653,16 @@ _e_sys_cb_timer(void *data EINA_UNUSED) + + e_init_status_set(_("Checking System Permissions")); + snprintf(buf, sizeof(buf), +- "%s/enlightenment/utils/enlightenment_sys -t halt", +- e_prefix_lib_get()); ++ "/run/setuid-programs/enlightenment_sys -t halt"); + _e_sys_halt_check_exe = ecore_exe_run(buf, NULL); + snprintf(buf, sizeof(buf), +- "%s/enlightenment/utils/enlightenment_sys -t reboot", +- e_prefix_lib_get()); ++ "/run/setuid-programs/enlightenment_sys -t reboot"); + _e_sys_reboot_check_exe = ecore_exe_run(buf, NULL); + snprintf(buf, sizeof(buf), +- "%s/enlightenment/utils/enlightenment_sys -t suspend", +- e_prefix_lib_get()); ++ "/run/setuid-programs/enlightenment_sys -t suspend"); + _e_sys_suspend_check_exe = ecore_exe_run(buf, NULL); + snprintf(buf, sizeof(buf), +- "%s/enlightenment/utils/enlightenment_sys -t hibernate", +- e_prefix_lib_get()); ++ "/run/setuid-programs/enlightenment_sys -t hibernate"); + _e_sys_hibernate_check_exe = ecore_exe_run(buf, NULL); + return ECORE_CALLBACK_CANCEL; + } +@@ -1079,8 +1075,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw) + /* shutdown -h now */ + if (e_util_immortal_check()) return 0; + snprintf(buf, sizeof(buf), +- "%s/enlightenment/utils/enlightenment_sys halt", +- e_prefix_lib_get()); ++ "/run/setuid-programs/enlightenment_sys halt"); + if (_e_sys_exe) + { + if ((ecore_time_get() - _e_sys_begin_time) > 2.0) +@@ -1114,8 +1109,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw) + /* shutdown -r now */ + if (e_util_immortal_check()) return 0; + snprintf(buf, sizeof(buf), +- "%s/enlightenment/utils/enlightenment_sys reboot", +- e_prefix_lib_get()); ++ "/run/setuid-programs/enlightenment_sys reboot"); + if (_e_sys_exe) + { + if ((ecore_time_get() - _e_sys_begin_time) > 2.0) +@@ -1148,8 +1142,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw) + case E_SYS_SUSPEND: + /* /etc/acpi/sleep.sh force */ + snprintf(buf, sizeof(buf), +- "%s/enlightenment/utils/enlightenment_sys suspend", +- e_prefix_lib_get()); ++ "/run/setuid-programs/enlightenment_sys suspend"); + if (_e_sys_exe) + { + if ((ecore_time_get() - _e_sys_begin_time) > 2.0) +@@ -1208,8 +1201,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw) + case E_SYS_HIBERNATE: + /* /etc/acpi/hibernate.sh force */ + snprintf(buf, sizeof(buf), +- "%s/enlightenment/utils/enlightenment_sys hibernate", +- e_prefix_lib_get()); ++ "/run/setuid-programs/enlightenment_sys hibernate"); + if (_e_sys_exe) + { + if ((ecore_time_get() - _e_sys_begin_time) > 2.0) +diff --git a/src/modules/bluez4/e_mod_main.c b/src/modules/bluez4/e_mod_main.c +index 4b5148634..47d34b07f 100644 +--- a/src/modules/bluez4/e_mod_main.c ++++ b/src/modules/bluez4/e_mod_main.c +@@ -49,8 +49,8 @@ _ebluez_l2ping_poller(void *data EINA_UNUSED) + + if (tmp) + { +- eina_strbuf_append_printf(buf, "%s/enlightenment/utils/enlightenment_sys l2ping %s", +- e_prefix_lib_get(), tmp); ++ eina_strbuf_append_printf(buf, "/run/setuid-programs/enlightenment_sys l2ping %s", ++ tmp); + autolock_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL); + } + +@@ -692,8 +692,7 @@ e_modapi_init(E_Module *m) + autolock_desklock = ecore_event_handler_add(E_EVENT_DESKLOCK, _ebluez_desklock, NULL); + + buf = eina_strbuf_new(); +- eina_strbuf_append_printf(buf, "%s/enlightenment/utils/enlightenment_sys -t l2ping", +- e_prefix_lib_get()); ++ eina_strbuf_append_printf(buf, "/run/setuid-programs/enlightenment_sys -t l2ping"); + autolock_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL); + eina_strbuf_free(buf); + +diff --git a/src/modules/cpufreq/e_mod_main.c b/src/modules/cpufreq/e_mod_main.c +index f4ba259b6..ae228bae3 100644 +--- a/src/modules/cpufreq/e_mod_main.c ++++ b/src/modules/cpufreq/e_mod_main.c +@@ -1450,8 +1450,7 @@ e_modapi_init(E_Module *m) + } + E_CONFIG_LIMIT(cpufreq_config->poll_interval, 1, 1024); + +- snprintf(buf, sizeof(buf), "%s/%s/freqset", +- e_module_dir_get(m), MODULE_ARCH); ++ snprintf(buf, sizeof(buf), "/run/setuid-programs/freqset"); + cpufreq_config->set_exe_path = strdup(buf); + + if (stat(buf, &st) < 0)