From: Volker Lendecke Date: Mon, 13 May 2024 13:44:14 +0000 (+0200) Subject: smbd: Test reparse tag in smb3_posix_cc_info X-Git-Tag: tdb-1.4.11~690 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ecb17c12c54214694ecc240ae290646d341cd9a5;p=thirdparty%2Fsamba.git smbd: Test reparse tag in smb3_posix_cc_info Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison --- diff --git a/python/samba/tests/smb3unix.py b/python/samba/tests/smb3unix.py index 1962852349c..66aa98b5aa9 100644 --- a/python/samba/tests/smb3unix.py +++ b/python/samba/tests/smb3unix.py @@ -23,6 +23,7 @@ from samba.common import get_string from samba.dcerpc import smb3posix from samba.ndr import ndr_unpack from samba.dcerpc.security import dom_sid +from samba import reparse_symlink import os import subprocess @@ -391,6 +392,46 @@ class Smb3UnixTests(samba.tests.libsmb.LibsmbTests): self.delete_test_file(c, '\\test_create_context_basic1_file') self.delete_test_file(c, '\\test_create_context_basic1_dir') + def test_create_context_reparse(self): + """ + Check reparse tag in posix create context response + """ + try: + c = libsmb.Conn( + self.server_ip, + "smb3_posix_share", + self.lp, + self.creds, + posix=True) + self.assertTrue(c.have_posix()) + + tag = 0x80000025 + + f,_,cc_out = c.create_ex('\\reparse', + DesiredAccess=security.SEC_STD_ALL, + CreateDisposition=libsmb.FILE_CREATE, + CreateContexts=[posix_context(0o600)]) + + cc = ndr_unpack(smb3posix.smb3_posix_cc_info, cc_out[0][1]) + self.assertEqual(cc.reparse_tag, libsmb.IO_REPARSE_TAG_RESERVED_ZERO) + + b = reparse_symlink.put(tag, 0, b'asdf') + c.fsctl(f, libsmb.FSCTL_SET_REPARSE_POINT, b, 0) + + c.close(f) + + f,_,cc_out = c.create_ex('\\reparse', + DesiredAccess=security.SEC_STD_ALL, + CreateDisposition=libsmb.FILE_OPEN, + CreateContexts=[posix_context(0o600)]) + c.close(f) + + cc = ndr_unpack(smb3posix.smb3_posix_cc_info, cc_out[0][1]) + self.assertEqual(cc.reparse_tag, tag) + + finally: + self.delete_test_file(c, '\\reparse') + def test_delete_on_close(self): """ Test two opens with delete-on-close: diff --git a/selftest/knownfail.d/smb3unix b/selftest/knownfail.d/smb3unix new file mode 100644 index 00000000000..e93d191ac0f --- /dev/null +++ b/selftest/knownfail.d/smb3unix @@ -0,0 +1 @@ +samba.tests.smb3unix.samba.tests.smb3unix.Smb3UnixTests.test_create_context_reparse