summaryrefslogtreecommitdiff
path: root/debian/patches/0018-trans-fakeroot-make-the-demuxer-payload-aware.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/0018-trans-fakeroot-make-the-demuxer-payload-aware.patch')
-rw-r--r--debian/patches/0018-trans-fakeroot-make-the-demuxer-payload-aware.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/debian/patches/0018-trans-fakeroot-make-the-demuxer-payload-aware.patch b/debian/patches/0018-trans-fakeroot-make-the-demuxer-payload-aware.patch
new file mode 100644
index 00000000..453fc34e
--- /dev/null
+++ b/debian/patches/0018-trans-fakeroot-make-the-demuxer-payload-aware.patch
@@ -0,0 +1,48 @@
+From ee388ad55279fd8c0be5dfdb36961304c73512b7 Mon Sep 17 00:00:00 2001
+From: Justus Winter <4winter@informatik.uni-hamburg.de>
+Date: Sun, 23 Nov 2014 19:24:49 +0100
+Subject: [PATCH hurd 18/27] trans/fakeroot: make the demuxer payload-aware
+
+* trans/fakeroot.c (netfs_demuxer): Make the demuxer payload-aware.
+---
+ trans/fakeroot.c | 17 +++++++++++++----
+ 1 file changed, 13 insertions(+), 4 deletions(-)
+
+diff --git a/trans/fakeroot.c b/trans/fakeroot.c
+index df2de64..12173bd 100644
+--- a/trans/fakeroot.c
++++ b/trans/fakeroot.c
+@@ -964,9 +964,16 @@ netfs_demuxer (mach_msg_header_t *inp,
+ {
+ /* We didn't recognize the message ID, so pass the message through
+ unchanged to the underlying file. */
+- struct protid *cred = ports_lookup_port (netfs_port_bucket,
+- inp->msgh_local_port,
+- netfs_protid_class);
++ struct protid *cred;
++ if (MACH_MSGH_BITS_LOCAL (inp->msgh_bits) ==
++ MACH_MSG_TYPE_PROTECTED_PAYLOAD)
++ cred = ports_lookup_payload (netfs_port_bucket,
++ inp->msgh_protected_payload,
++ netfs_protid_class);
++ else
++ cred = ports_lookup_port (netfs_port_bucket,
++ inp->msgh_local_port,
++ netfs_protid_class);
+ if (cred == 0)
+ /* This must be an unknown message on our fsys control port. */
+ return 0;
+@@ -974,7 +981,9 @@ netfs_demuxer (mach_msg_header_t *inp,
+ {
+ error_t err;
+ assert (MACH_MSGH_BITS_LOCAL (inp->msgh_bits)
+- == MACH_MSG_TYPE_MOVE_SEND);
++ == MACH_MSG_TYPE_MOVE_SEND
++ || MACH_MSGH_BITS_LOCAL (inp->msgh_bits)
++ == MACH_MSG_TYPE_PROTECTED_PAYLOAD);
+ inp->msgh_bits = (inp->msgh_bits & MACH_MSGH_BITS_COMPLEX)
+ | MACH_MSGH_BITS (MACH_MSG_TYPE_COPY_SEND,
+ MACH_MSGH_BITS_REMOTE (inp->msgh_bits));
+--
+2.1.3
+