bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH hurd 21/30] trans/fakeroot: make the demuxer payload-aware


From: Justus Winter
Subject: [PATCH hurd 21/30] trans/fakeroot: make the demuxer payload-aware
Date: Thu, 27 Nov 2014 14:19:01 +0100

* 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]