diff options
author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2013-12-08 18:28:01 +0100 |
---|---|---|
committer | Justus Winter <4winter@informatik.uni-hamburg.de> | 2013-12-09 15:07:59 +0100 |
commit | 3688ec3ef963c8e41f845c1d98205ca69f91576b (patch) | |
tree | 763c0d0f06d3706ca346f5dff52b0696b0371f65 /trans | |
parent | 2ce5406504540399ed78306198802fc4e1824de7 (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.c | 11 |
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. |