From: Sachin Prabhu Date: Wed, 10 Mar 2021 12:22:07 +0000 (+0000) Subject: smbd: Ensure errno is preserved across fsp destructor X-Git-Tag: tevent-0.11.0~1600 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=65510204d4123b1825ea57607e84ba50f8ce3baf;p=thirdparty%2Fsamba.git 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. 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 --- diff --git a/source3/smbd/files.c b/source3/smbd/files.c index 8e01815531d..b13d151a876 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; }