From: Jeremy Allison Date: Thu, 19 Aug 2021 22:43:52 +0000 (-0700) Subject: s3: smbd: Ensure all returns from OpenDir() correctly set errno. X-Git-Tag: ldb-2.5.0~890 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=72b4fe93f15e414ca3e7d7f0e77a5f0aae90556a;p=thirdparty%2Fsamba.git s3: smbd: Ensure all returns from OpenDir() correctly set errno. Complex code paths inside open_internal_dirfsp() can return an NTSTATUS, but trample on the matching errno. We need to make sure if open_internal_dirfsp() fails, errno matches the NTSTATUS return. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14805 Signed-off-by: Jeremy Allison Reviewed-by: Noel Power Autobuild-User(master): Noel Power Autobuild-Date(master): Fri Aug 20 09:56:49 UTC 2021 on sn-devel-184 --- diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c index 4c807c3f85c..174f07b1159 100644 --- a/source3/smbd/dir.c +++ b/source3/smbd/dir.c @@ -1474,6 +1474,8 @@ struct smb_Dir *OpenDir(TALLOC_CTX *mem_ctx, O_RDONLY, &fsp); if (!NT_STATUS_IS_OK(status)) { + /* Ensure we return the actual error from status in errno. */ + errno = map_errno_from_nt_status(status); return NULL; }