diff options
author | Justus Winter <justus@gnupg.org> | 2016-02-22 19:23:14 +0100 |
---|---|---|
committer | Justus Winter <justus@gnupg.org> | 2016-02-22 19:23:14 +0100 |
commit | fdf8728e043629f6773a925b99152b937b68ab33 (patch) | |
tree | 068e70739943ab6e37e8cf4468357ef4e53188eb /debian/patches/mount-fix0001-utils-mount-start-translators-with-stderr-closed.patch | |
parent | e3a3df72ef792f591d5c07fedf5ac4c82b78b6e5 (diff) |
add patch series
Diffstat (limited to 'debian/patches/mount-fix0001-utils-mount-start-translators-with-stderr-closed.patch')
-rw-r--r-- | debian/patches/mount-fix0001-utils-mount-start-translators-with-stderr-closed.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/debian/patches/mount-fix0001-utils-mount-start-translators-with-stderr-closed.patch b/debian/patches/mount-fix0001-utils-mount-start-translators-with-stderr-closed.patch new file mode 100644 index 00000000..8efdbc36 --- /dev/null +++ b/debian/patches/mount-fix0001-utils-mount-start-translators-with-stderr-closed.patch @@ -0,0 +1,60 @@ +From 234568d0c683d35362a17dd44b76472c405fbd86 Mon Sep 17 00:00:00 2001 +From: Justus Winter <justus@gnupg.org> +Date: Mon, 22 Feb 2016 19:18:05 +0100 +Subject: [PATCH hurd] utils/mount: start translators with stderr closed + +Apparently some users of 'mount' do not cope with any output being +generated from the spawned translator. + +* utils/mount.c (do_mount): Start translators with stderr closed. +--- + utils/mount.c | 33 ++++++++++++++++++++++++++++++--- + 1 file changed, 30 insertions(+), 3 deletions(-) + +diff --git a/utils/mount.c b/utils/mount.c +index c5736ba..5fa35bc 100644 +--- a/utils/mount.c ++++ b/utils/mount.c +@@ -420,9 +420,36 @@ do_mount (struct fs *fs, int remount) + } + + explain ("settrans -a"); +- err = fshelp_start_translator (open_node, NULL, fsopts, +- fsopts, fsopts_len, timeout, +- &active_control); ++ { ++ mach_port_t ports[INIT_PORT_MAX]; ++ mach_port_t fds[STDERR_FILENO + 1]; ++ int ints[INIT_INT_MAX]; ++ int i; ++ ++ for (i = 0; i < INIT_PORT_MAX; i++) ++ ports[i] = MACH_PORT_NULL; ++ for (i = 0; i < STDERR_FILENO + 1; i++) ++ fds[i] = MACH_PORT_NULL; ++ memset (ints, 0, INIT_INT_MAX * sizeof(int)); ++ ++ ports[INIT_PORT_CWDIR] = getcwdir (); ++ ports[INIT_PORT_CRDIR] = getcrdir (); ++ ports[INIT_PORT_AUTH] = getauth (); ++ ++ err = fshelp_start_translator_long (open_node, NULL, ++ fsopts, fsopts, fsopts_len, ++ fds, MACH_MSG_TYPE_COPY_SEND, ++ STDERR_FILENO + 1, ++ ports, MACH_MSG_TYPE_COPY_SEND, ++ INIT_PORT_MAX, ++ ints, INIT_INT_MAX, ++ geteuid (), ++ timeout, &active_control); ++ for (i = 0; i < INIT_PORT_MAX; i++) ++ mach_port_deallocate (mach_task_self (), ports[i]); ++ for (i = 0; i <= STDERR_FILENO; i++) ++ mach_port_deallocate (mach_task_self (), fds[i]); ++ } + /* If ERR is due to a problem opening the translated node, we print + that name, otherwise, the name of the translator. */ + if (open_err) +-- +2.1.4 + |