libsmb: Fix parsing symlink reparse points
authorVolker Lendecke <vl@samba.org>
Wed, 30 Aug 2023 07:22:13 +0000 (09:22 +0200)
committerJeremy Allison <jra@samba.org>
Fri, 8 Sep 2023 17:24:19 +0000 (17:24 +0000)
Untested code is broken code. For symlinks we need to hand over the
full reparse buffer into symlink_reparse_buffer_parse(), as this is
also used for the smb2 error response handling. For that, the
"reserved" field in [MS-FSCC] 2.1.2.4 Symbolic Link Reparse Data
Buffer is used for the "unparsed" field.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Fri Sep  8 17:24:19 UTC 2023 on atb-devel-224

libcli/smb/reparse.c
selftest/knownfail.d/symlink

index 61b893123a4c26e8c073881007bbc63c84e894c4..1c4ad444bfc62fa35098f4373f74734742fd8ce7 100644 (file)
@@ -230,8 +230,8 @@ NTSTATUS reparse_data_buffer_parse(TALLOC_CTX *mem_ctx,
        case IO_REPARSE_TAG_SYMLINK:
                ret = symlink_reparse_buffer_parse(mem_ctx,
                                                   &dst->parsed.lnk,
-                                                  reparse_data,
-                                                  reparse_data_length);
+                                                  buf,
+                                                  buflen);
                if (ret != 0) {
                        return map_nt_error_from_unix_common(ret);
                }
index ade7b9e70c6d717ea258e4d5f80303335f5eef84..64135666aec1a7c5a1f2a70ef2e572ce3e9df4bb 100644 (file)
@@ -2,4 +2,3 @@
 ^samba.tests.smb2symlink.samba.tests.smb2symlink.Smb2SymlinkTests.test_symlinkerror_file
 ^samba.tests.smb2symlink.samba.tests.smb2symlink.Smb2SymlinkTests.test_symlinkerror_absolute_outside_share
 ^samba.tests.smb2symlink.samba.tests.smb2symlink.Smb2SymlinkTests.test_symlinkerror_absolute_inshare
-^samba.tests.smb2symlink.samba.tests.smb2symlink.Smb2SymlinkTests.test_symlink_reparse_data_buffer_parse