smbd: return the correct error in can_rename()
authorRalph Boehme <slow@samba.org>
Tue, 19 Dec 2023 12:06:55 +0000 (13:06 +0100)
committerJule Anger <janger@samba.org>
Tue, 9 Jan 2024 12:13:13 +0000 (12:13 +0000)
This is what Windows returns for this case.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13688

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
(cherry picked from commit 276c5bd851ab6ab818a49d9c47f6b96de8024778)

source3/smbd/smb2_reply.c

index dfcd05d2cae18e7c058566c020410b0b73e61aae..a7c63c0df58e3999f437e5ddf7f27987112a86e6 100644 (file)
@@ -1140,6 +1140,11 @@ ssize_t sendfile_short_send(struct smbXsrv_connection *xconn,
 static NTSTATUS can_rename(connection_struct *conn, files_struct *fsp,
                        uint16_t dirtype)
 {
+       if (fsp->fsp_name->twrp != 0) {
+               /* Get the error right, this is what Windows returns. */
+               return NT_STATUS_NOT_SAME_DEVICE;
+       }
+
        if (!CAN_WRITE(conn)) {
                return NT_STATUS_MEDIA_WRITE_PROTECTED;
        }