tests: Add reproducer for BZ15481
authorVolker Lendecke <vl@samba.org>
Wed, 20 Sep 2023 17:53:52 +0000 (10:53 -0700)
committerJule Anger <janger@samba.org>
Fri, 22 Sep 2023 20:11:08 +0000 (20:11 +0000)
Bug: https://bugzilla.samba.org/show_bug.cgi?id=15481

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
(cherry picked from commit 56df75d44795582dcecb8676a0d80d6f4a46c7e9)

python/samba/tests/libsmb-basic.py
selftest/knownfail.d/bug-15481 [new file with mode: 0644]

index cbe7cce5bae356d0d311ea6a1f9b1ce09a600e34..163c5b09ea987eadaebf574eaab73170ec85f96f 100644 (file)
@@ -215,6 +215,33 @@ class LibsmbTestCase(samba.tests.libsmb.LibsmbTests):
             c1.unlink("x")
             c1 = None
 
+    def test_gencache_pollution_bz15481(self):
+        c = libsmb.Conn(self.server_ip, "tmp", self.lp, self.creds)
+        fh = c.create("file",
+                      DesiredAccess=security.SEC_STD_DELETE,
+                      CreateDisposition=libsmb.FILE_CREATE)
+
+        # prime the gencache File->file
+        fh_upper = c.create("File",
+                            DesiredAccess=security.SEC_FILE_READ_ATTRIBUTE,
+                            CreateDisposition=libsmb.FILE_OPEN)
+        c.close(fh_upper)
+
+        c.delete_on_close(fh, 1)
+        c.close(fh)
+
+        fh = c.create("File",
+                      DesiredAccess=security.SEC_STD_DELETE,
+                      CreateDisposition=libsmb.FILE_CREATE)
+
+        directory = c.list("\\", "File")
+
+        c.delete_on_close(fh, 1)
+        c.close(fh)
+
+        # Without the bugfix for 15481 we get 'file' not 'File'
+        self.assertEqual(directory[0]['name'], 'File')
+
 if __name__ == "__main__":
     import unittest
     unittest.main()
diff --git a/selftest/knownfail.d/bug-15481 b/selftest/knownfail.d/bug-15481
new file mode 100644 (file)
index 0000000..e4ca91c
--- /dev/null
@@ -0,0 +1 @@
+^samba.tests.libsmb-basic.samba.tests.libsmb-basic.LibsmbTestCase.test_gencache_pollution_bz15481