diff options
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.patch | 48 |
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..fdf9ea8b --- /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/29] 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 + |