]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ldb: Add more segfault tests DN handling
authorAndrew Bartlett <abartlet@samba.org>
Mon, 25 Mar 2024 09:21:19 +0000 (22:21 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 10 Apr 2024 05:13:32 +0000 (05:13 +0000)
- from_dict DN use-after-free
- check for the same directly creating the ldb.Message

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
python/samba/tests/segfault.py

index 2b543dc63820dd6ed0fa6503c732968db0ab53b5..8b1676a90d09a563290f2d4a07fd527baaa6e64d 100644 (file)
@@ -375,6 +375,46 @@ class SegfaultTests(samba.tests.TestCase):
             del msg
             dn.get_casefold()
 
+    @no_gdb_backtrace
+    @segfault_detector
+    def test_ldb_use_after_dict_init(self):
+
+        msg = ldb.Message()
+
+        samdb = self.get_samdb()
+        msg.dn = ldb.Dn(samdb, "CN=Test")
+
+        msg2 = ldb.Message.from_dict(samdb,
+                                     {"dn": msg.dn,
+                                      "foo": ["bar"]})
+        del msg
+        dn = msg2.dn
+        dn.add_child("CN=TEST")
+        dn.set_component(0, "CN", "Test2")
+
+        del samdb
+
+        dn.get_casefold()
+
+    @no_gdb_backtrace
+    @segfault_detector
+    def test_ldb_use_after_msg_init(self):
+
+        msg = ldb.Message()
+
+        samdb = self.get_samdb()
+        msg.dn = ldb.Dn(samdb, "CN=Test")
+
+        msg2 = ldb.Message(dn=msg.dn)
+        del msg
+        dn = msg2.dn
+        dn.add_child("CN=TEST")
+        dn.set_component(0, "CN", "Test2")
+
+        del samdb
+
+        dn.get_casefold()
+
     @no_gdb_backtrace
     @segfault_detector
     def test_ldb_use_after_free_msg_diff(self):