The Samba-Bugzilla – Attachment 17142 Details for
Bug 14938
NT error code is not set when overwriting a file during rename in libsmbclient
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
git-am fix for 4.16.rcNext., 4.15.next, 4.14.next.
bug-14938-4.16.patch (text/plain), 5.63 KB, created by
Jeremy Allison
on 2022-02-02 22:09:26 UTC
(
hide
)
Description:
git-am fix for 4.16.rcNext., 4.15.next, 4.14.next.
Filename:
MIME Type:
Creator:
Jeremy Allison
Created:
2022-02-02 22:09:26 UTC
Size:
5.63 KB
patch
obsolete
>From 985969d884d070f3e21f76ae97125a2c35038e9c Mon Sep 17 00:00:00 2001 >From: Jeremy Allison <jra@samba.org> >Date: Wed, 2 Feb 2022 10:49:17 -0800 >Subject: [PATCH 1/2] s4: test: Add samba4.libsmbclient.rename test. Currently > fails for SMB3. > >Add knownfail.d/libsmbclient_rename > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=14938 > >Signed-off-by: Jeremy Allison <jra@samba.org> >Reviewed-by: Ralph Boehme <slow@samba.org> >(cherry picked from commit 0ecc58858360bcc0181a02e52ada3e8327f97c5b) >--- > selftest/knownfail.d/libsmbclient_rename | 1 + > source4/torture/libsmbclient/libsmbclient.c | 112 ++++++++++++++++++++ > 2 files changed, 113 insertions(+) > create mode 100644 selftest/knownfail.d/libsmbclient_rename > >diff --git a/selftest/knownfail.d/libsmbclient_rename b/selftest/knownfail.d/libsmbclient_rename >new file mode 100644 >index 00000000000..88343b7d5ef >--- /dev/null >+++ b/selftest/knownfail.d/libsmbclient_rename >@@ -0,0 +1 @@ >+^samba4.libsmbclient.rename.SMB3.rename\(nt4_dc\) >diff --git a/source4/torture/libsmbclient/libsmbclient.c b/source4/torture/libsmbclient/libsmbclient.c >index fd770e5002f..b04dbde04ac 100644 >--- a/source4/torture/libsmbclient/libsmbclient.c >+++ b/source4/torture/libsmbclient/libsmbclient.c >@@ -1303,6 +1303,115 @@ out: > return ok; > } > >+static bool torture_libsmbclient_rename(struct torture_context *tctx) >+{ >+ SMBCCTX *ctx = NULL; >+ int fhandle = -1; >+ bool success = false; >+ const char *filename_src = NULL; >+ const char *filename_dst = NULL; >+ int ret; >+ const char *smburl = torture_setting_string(tctx, "smburl", NULL); >+ >+ if (smburl == NULL) { >+ torture_fail(tctx, >+ "option --option=torture:smburl=" >+ "smb://user:password@server/share missing\n"); >+ } >+ >+ torture_assert_goto(tctx, >+ torture_libsmbclient_init_context(tctx, &ctx), >+ success, >+ done, >+ ""); >+ >+ smbc_set_context(ctx); >+ >+ filename_src = talloc_asprintf(tctx, >+ "%s/src", >+ smburl); >+ if (filename_src == NULL) { >+ torture_fail_goto(tctx, done, "talloc fail\n"); >+ } >+ >+ filename_dst = talloc_asprintf(tctx, >+ "%s/dst", >+ smburl); >+ if (filename_dst == NULL) { >+ torture_fail_goto(tctx, done, "talloc fail\n"); >+ } >+ >+ /* Ensure the files don't exist. */ >+ smbc_unlink(filename_src); >+ smbc_unlink(filename_dst); >+ >+ /* Create them. */ >+ fhandle = smbc_creat(filename_src, 0666); >+ if (fhandle < 0) { >+ torture_fail_goto(tctx, >+ done, >+ talloc_asprintf(tctx, >+ "failed to create file '%s': %s", >+ filename_src, >+ strerror(errno))); >+ } >+ ret = smbc_close(fhandle); >+ torture_assert_int_equal_goto(tctx, >+ ret, >+ 0, >+ success, >+ done, >+ talloc_asprintf(tctx, >+ "failed to close handle for '%s'", >+ filename_src)); >+ >+ fhandle = smbc_creat(filename_dst, 0666); >+ if (fhandle < 0) { >+ torture_fail_goto(tctx, >+ done, >+ talloc_asprintf(tctx, >+ "failed to create file '%s': %s", >+ filename_dst, >+ strerror(errno))); >+ } >+ ret = smbc_close(fhandle); >+ torture_assert_int_equal_goto(tctx, >+ ret, >+ 0, >+ success, >+ done, >+ talloc_asprintf(tctx, >+ "failed to close handle for '%s'", >+ filename_dst)); >+ >+ ret = smbc_rename(filename_src, filename_dst); >+ >+ /* >+ * BUG: https://bugzilla.samba.org/show_bug.cgi?id=14938 >+ * gives ret == -1, but errno = 0 for overwrite renames >+ * over SMB2. >+ */ >+ torture_assert_int_equal_goto(tctx, >+ ret, >+ 0, >+ success, >+ done, >+ talloc_asprintf(tctx, >+ "smbc_rename '%s' -> '%s' failed with %s\n", >+ filename_src, >+ filename_dst, >+ strerror(errno))); >+ >+ /* Remove them again. */ >+ smbc_unlink(filename_src); >+ smbc_unlink(filename_dst); >+ success = true; >+ >+ done: >+ smbc_free_context(ctx, 1); >+ return success; >+} >+ > NTSTATUS torture_libsmbclient_init(TALLOC_CTX *ctx) > { > struct torture_suite *suite; >@@ -1326,6 +1435,9 @@ NTSTATUS torture_libsmbclient_init(TALLOC_CTX *ctx) > suite, "utimes", torture_libsmbclient_utimes); > torture_suite_add_simple_test( > suite, "noanon_list", torture_libsmbclient_noanon_list); >+ torture_suite_add_simple_test(suite, >+ "rename", >+ torture_libsmbclient_rename); > > suite->description = talloc_strdup(suite, "libsmbclient interface tests"); > >-- >2.32.0 > > >From 65363f162ec6f4e047bca6f0c3d87384a85bb47e Mon Sep 17 00:00:00 2001 >From: Jeremy Allison <jra@samba.org> >Date: Wed, 2 Feb 2022 10:52:09 -0800 >Subject: [PATCH 2/2] lib: libsmbclient: Ensure cli_rename() always sets > cli->raw_status. > >Identical change as used in cli_unlink(), cli_mkdir(), cli_rmdir() >cli_chkpath() to ensure SMB2 calls correctly set raw_status for >libsmbclient uses. > >Remove knownfail. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=14938 > >Signed-off-by: Jeremy Allison <jra@samba.org> >Reviewed-by: Ralph Boehme <slow@samba.org> > >Autobuild-User(master): Jeremy Allison <jra@samba.org> >Autobuild-Date(master): Wed Feb 2 21:50:31 UTC 2022 on sn-devel-184 > >(cherry picked from commit ca60f6350d566b7ecc822bcbb44fb65a1d150bbe) >--- > selftest/knownfail.d/libsmbclient_rename | 1 - > source3/libsmb/clifile.c | 1 + > 2 files changed, 1 insertion(+), 1 deletion(-) > delete mode 100644 selftest/knownfail.d/libsmbclient_rename > >diff --git a/selftest/knownfail.d/libsmbclient_rename b/selftest/knownfail.d/libsmbclient_rename >deleted file mode 100644 >index 88343b7d5ef..00000000000 >--- a/selftest/knownfail.d/libsmbclient_rename >+++ /dev/null >@@ -1 +0,0 @@ >-^samba4.libsmbclient.rename.SMB3.rename\(nt4_dc\) >diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c >index f1d0a9483f6..3c3f44923fc 100644 >--- a/source3/libsmb/clifile.c >+++ b/source3/libsmb/clifile.c >@@ -1489,6 +1489,7 @@ NTSTATUS cli_rename(struct cli_state *cli, > } > > status = cli_rename_recv(req); >+ cli->raw_status = status; /* cli_smb2_rename_recv doesn't set this */ > > fail: > TALLOC_FREE(frame); >-- >2.32.0 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
slow
:
review+
Actions:
View
Attachments on
bug 14938
:
17068
| 17142