From 98701eee2436be35aaa1843f7085d2906cf8b6ad Mon Sep 17 00:00:00 2001 From: Sachin Prabhu Date: Wed, 10 Mar 2021 12:22:07 +0000 Subject: [PATCH] smbd: Ensure errno is preserved across fsp destructor The errno can be overwritten by the calls made by the fsp destructor. This can cause problems if the original errno was required by subsequent calls. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14662 Signed-off-by: Jeremy Allison Signed-off-by: Sachin Prabhu Reviewed-by: Andrew Bartlett Autobuild-User(master): Andrew Bartlett Autobuild-Date(master): Wed Mar 10 22:55:17 UTC 2021 on sn-devel-184 (cherry picked from commit 65510204d4123b1825ea57607e84ba50f8ce3baf) --- source3/smbd/files.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source3/smbd/files.c b/source3/smbd/files.c index f60d5979f53..d9fd2b8ea86 100644 --- a/source3/smbd/files.c +++ b/source3/smbd/files.c @@ -358,10 +358,12 @@ static int smb_fname_fsp_destructor(struct smb_filename *smb_fname) { struct files_struct *fsp = smb_fname->fsp; NTSTATUS status; + int saved_errno = errno; destroy_fsp_smb_fname_link(&smb_fname->fsp_link); if (fsp == NULL) { + errno = saved_errno; return 0; } @@ -380,6 +382,7 @@ static int smb_fname_fsp_destructor(struct smb_filename *smb_fname) file_free(NULL, fsp); smb_fname->fsp = NULL; + errno = saved_errno; return 0; } -- 2.27.0