From 8b5b59c704e9edbb0784697ada1df9112fc3e18b Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 2 Sep 2023 14:53:59 +0200 Subject: S_dir_lookup: Handle O_DIRECTORY When e.g. looking up a socket with O_DIRECTORY, we should return ENOTDIR rather than EACCESS. --- libdiskfs/dir-lookup.c | 2 +- libnetfs/dir-lookup.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libdiskfs/dir-lookup.c b/libdiskfs/dir-lookup.c index 8df81cfa..30e2a2e3 100644 --- a/libdiskfs/dir-lookup.c +++ b/libdiskfs/dir-lookup.c @@ -51,7 +51,7 @@ diskfs_S_dir_lookup (struct protid *dircred, int lastcomp = 0; int newnode = 0; struct dirstat *ds = 0; - int mustbedir = 0; + int mustbedir = (flags & O_DIRECTORY) != 0; mach_msg_type_name_t amt; int type; struct protid *newpi = 0; diff --git a/libnetfs/dir-lookup.c b/libnetfs/dir-lookup.c index d77feac8..dfcb7819 100644 --- a/libnetfs/dir-lookup.c +++ b/libnetfs/dir-lookup.c @@ -39,7 +39,7 @@ netfs_S_dir_lookup (struct protid *dircred, { int create; /* true if O_CREAT flag set */ int excl; /* true if O_EXCL flag set */ - int mustbedir = 0; /* true if the result must be S_IFDIR */ + int mustbedir = (flags & O_DIRECTORY) != 0; /* true if the result must be S_IFDIR */ int lastcomp = 0; /* true if we are at the last component */ int newnode = 0; /* true if this node is newly created */ int nsymlinks = 0; -- cgit v1.2.3