diff options
Diffstat (limited to 'debian/patches/0024-utils-rpctrace-make-trace_and_forward-payload-aware.patch')
-rw-r--r-- | debian/patches/0024-utils-rpctrace-make-trace_and_forward-payload-aware.patch | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/debian/patches/0024-utils-rpctrace-make-trace_and_forward-payload-aware.patch b/debian/patches/0024-utils-rpctrace-make-trace_and_forward-payload-aware.patch deleted file mode 100644 index ed0a4274..00000000 --- a/debian/patches/0024-utils-rpctrace-make-trace_and_forward-payload-aware.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 2f8b47d3c7d991f9f030dd688b2bffb2f228d48a Mon Sep 17 00:00:00 2001 -From: Justus Winter <4winter@informatik.uni-hamburg.de> -Date: Thu, 28 Nov 2013 12:21:49 +0100 -Subject: [PATCH hurd 24/28] utils/rpctrace: make `trace_and_forward' - payload-aware - -As the protected payloads were retrofitted into the Mach message -format, the local port type is lost. - -* utils/rpctrace.c (is_notification): New function -(trace_and_forward): Recover the original local port type. ---- - utils/rpctrace.c | 29 ++++++++++++++++++++++++++++- - 1 file changed, 28 insertions(+), 1 deletion(-) - -diff --git a/utils/rpctrace.c b/utils/rpctrace.c -index c954e51..62d3c87 100644 ---- a/utils/rpctrace.c -+++ b/utils/rpctrace.c -@@ -1195,6 +1195,16 @@ wrap_new_task (mach_msg_header_t *inp, struct req_info *req) - ports_port_deref (task_wrapper1); - } - -+/* Returns true if the given message is a Mach notification. */ -+static inline int -+is_notification (const mach_msg_header_t *InHeadP) -+{ -+ int msgh_id = InHeadP->msgh_id - 64; -+ if ((msgh_id > 8) || (msgh_id < 0)) -+ return 0; -+ return 1; -+} -+ - int - trace_and_forward (mach_msg_header_t *inp, mach_msg_header_t *outp) - { -@@ -1219,7 +1229,24 @@ trace_and_forward (mach_msg_header_t *inp, mach_msg_header_t *outp) - /* Look up our record for the receiving port. There is no need to check - the class, because our port bucket only ever contains one class of - ports (traced_class). */ -- info = ports_lookup_port (traced_bucket, inp->msgh_local_port, 0); -+ -+ if (MACH_MSGH_BITS_LOCAL (inp->msgh_bits) == MACH_MSG_TYPE_PROTECTED_PAYLOAD) -+ { -+ info = ports_lookup_payload (traced_bucket, inp->msgh_protected_payload, -+ NULL); -+ if (info) -+ { -+ /* Undo the protected payload optimization. */ -+ inp->msgh_bits = MACH_MSGH_BITS ( -+ MACH_MSGH_BITS_REMOTE (inp->msgh_bits), -+ is_notification (inp)? MACH_MSG_TYPE_MOVE_SEND_ONCE: info->type) -+ | MACH_MSGH_BITS_OTHER (inp->msgh_bits); -+ inp->msgh_local_port = ports_payload_get_name (info); -+ } -+ } -+ else -+ info = ports_lookup_port (traced_bucket, inp->msgh_local_port, NULL); -+ - assert (info); - - /* A notification message from the kernel appears to have been sent --- -2.1.3 - |