summaryrefslogtreecommitdiff
path: root/debian/patches/0020-trans-fakeroot-make-the-demuxer-payload-aware.patch
blob: b0df32575b4e7e9fa44225fe9cba2c8a1986be85 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
From 23f022dfe70df5832dca839934b4fb0de58923da 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 20/28] 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