hurd: Avoid leaking task & thread ports
authorSergey Bugaev <bugaevc@gmail.com>
Fri, 14 Apr 2023 19:37:00 +0000 (22:37 +0300)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Mon, 17 Apr 2023 23:20:46 +0000 (01:20 +0200)
Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
hurd/catch-exc.c

index d375bf6..bec850f 100644 (file)
@@ -35,6 +35,7 @@ _S_catch_exception_raise (mach_port_t port,
 #endif
                          )
 {
+  error_t err;
   struct hurd_sigstate *ss;
   int signo;
   struct hurd_signal_detail d;
@@ -83,6 +84,11 @@ _S_catch_exception_raise (mach_port_t port,
                              MACH_PORT_NULL, MACH_MSG_TYPE_PORT_SEND,
                              0);
 
+  err = __mach_port_deallocate (__mach_task_self (), task);
+  assert_perror (err);
+  err = __mach_port_deallocate (__mach_task_self (), thread);
+  assert_perror (err);
+
   return KERN_SUCCESS;
 }