diff options
Diffstat (limited to 'debian/patches/corefiles0001-trans-crash-fix-resource-leaks.patch')
-rw-r--r-- | debian/patches/corefiles0001-trans-crash-fix-resource-leaks.patch | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/debian/patches/corefiles0001-trans-crash-fix-resource-leaks.patch b/debian/patches/corefiles0001-trans-crash-fix-resource-leaks.patch new file mode 100644 index 00000000..f9c9d1ee --- /dev/null +++ b/debian/patches/corefiles0001-trans-crash-fix-resource-leaks.patch @@ -0,0 +1,52 @@ +From 105d7bc17ff8ec01c27f3e9c3dca1468bde79b8d Mon Sep 17 00:00:00 2001 +From: Justus Winter <justus@gnupg.org> +Date: Fri, 3 Jun 2016 16:55:55 +0200 +Subject: [PATCH hurd 1/2] trans/crash: fix resource leaks + +* trans/crash.c (S_crash_dump_task): Properly deallocate 'task', +'core_file', and 'ctty_id'. +--- + trans/crash.c | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/trans/crash.c b/trans/crash.c +index 5db9974..a541af7 100644 +--- a/trans/crash.c ++++ b/trans/crash.c +@@ -217,7 +217,9 @@ S_crash_dump_task (mach_port_t port, + proc_mark_stop (user_proc, signo, sigcode); + + c->task = task; ++ task = MACH_PORT_NULL; + c->core_file = core_file; ++ core_file = MACH_PORT_NULL; + c->core_limit = (off_t) -1; /* XXX should core limit in RPC */ + c->signo = signo; + c->sigcode = sigcode; +@@ -251,17 +253,17 @@ S_crash_dump_task (mach_port_t port, + if (!err) + err = proc_mark_exit (user_proc, W_EXITCODE (0, signo), sigcode); + err = task_terminate (task); +- if (!err) +- { +- mach_port_deallocate (mach_task_self (), task); +- mach_port_deallocate (mach_task_self (), core_file); +- mach_port_deallocate (mach_task_self (), ctty_id); +- } + } + } + + if (user_proc != MACH_PORT_NULL) + mach_port_deallocate (mach_task_self (), user_proc); ++ if (! err && MACH_PORT_VALID (task)) ++ mach_port_deallocate (mach_task_self (), task); ++ if (! err && MACH_PORT_VALID (core_file)) ++ mach_port_deallocate (mach_task_self (), core_file); ++ if (! err && MACH_PORT_VALID (ctty_id)) ++ mach_port_deallocate (mach_task_self (), ctty_id); + + ports_port_deref (cred); + return err; +-- +2.1.4 + |