summaryrefslogtreecommitdiff
path: root/trans
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2013-12-08 18:28:01 +0100
committerJustus Winter <4winter@informatik.uni-hamburg.de>2013-12-09 15:07:59 +0100
commit3688ec3ef963c8e41f845c1d98205ca69f91576b (patch)
tree763c0d0f06d3706ca346f5dff52b0696b0371f65 /trans
parent2ce5406504540399ed78306198802fc4e1824de7 (diff)
trans: handle invalid responses to dir_lookup requests in fakeroot
* trans/fakeroot.c (netfs_S_dir_lookup): Handle invalid responses to dir_lookup requests.
Diffstat (limited to 'trans')
-rw-r--r--trans/fakeroot.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/trans/fakeroot.c b/trans/fakeroot.c
index 6e3b5d4b..bee018e2 100644
--- a/trans/fakeroot.c
+++ b/trans/fakeroot.c
@@ -276,14 +276,21 @@ netfs_S_dir_lookup (struct protid *diruser,
break;
case FS_RETRY_MAGICAL:
- default:
if (file == MACH_PORT_NULL)
{
*retry_port = MACH_PORT_NULL;
*retry_port_type = MACH_MSG_TYPE_COPY_SEND;
return 0;
}
- break;
+ /* Fallthrough. */
+
+ default:
+ /* Invalid response to our dir_lookup request. */
+ if (file != MACH_PORT_NULL)
+ mach_port_deallocate (mach_task_self (), file);
+ *retry_port = MACH_PORT_NULL;
+ *retry_port_type = MACH_MSG_TYPE_COPY_SEND;
+ return EOPNOTSUPP;
}
/* We have a new port to an underlying node.