From: Jeremy Allison Date: Mon, 7 Jun 2021 16:44:23 +0000 (-0700) Subject: s3: VFS: shadow_copy2: Code cleanup. In shadow_copy2_get_shadow_copy_data() preserve... X-Git-Tag: tevent-0.11.0~646 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a80456e61de2d79a9f896b22ca2772c53994f8ec;p=thirdparty%2Fsamba.git s3: VFS: shadow_copy2: Code cleanup. In shadow_copy2_get_shadow_copy_data() preserve errno accross cleanup syscalls. This VFS function should really return an NTSTATUS but that is a patch for another day. Signed-off-by: Jeremy Allison Reviewed-by: Ralph Boehme --- diff --git a/source3/modules/vfs_shadow_copy2.c b/source3/modules/vfs_shadow_copy2.c index 574b60c5a64..45b1ede87c8 100644 --- a/source3/modules/vfs_shadow_copy2.c +++ b/source3/modules/vfs_shadow_copy2.c @@ -1977,6 +1977,7 @@ static int shadow_copy2_get_shadow_copy_data( int fd; int ret = -1; NTSTATUS status; + int saved_errno = 0; snapdir = shadow_copy2_find_snapdir(tmp_ctx, handle, fsp->fsp_name); if (snapdir == NULL) { @@ -2136,6 +2137,9 @@ static int shadow_copy2_get_shadow_copy_data( ret = 0; done: + if (ret != 0) { + saved_errno = errno; + } TALLOC_FREE(fspcwd ); if (p != NULL) { SMB_VFS_NEXT_CLOSEDIR(handle, p); @@ -2153,6 +2157,9 @@ done: file_free(NULL, dirfsp); } TALLOC_FREE(tmp_ctx); + if (saved_errno != 0) { + errno = saved_errno; + } return ret; }