mirror of
https://github.com/samba-team/samba.git
synced 2025-08-02 00:22:11 +03:00
CVE-2020-27840: pytests: move Dn.validate test to ldb
We had the test in the Samba Python segfault suite because a) the signal catching infrastructure was there, and b) the ldb tests lack Samba's knownfail mechanism, which allowed us to assert the failure. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14595 Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
committed by
Stefan Metzmacher
parent
dbb3e65f7e
commit
9532c44bae
45
lib/ldb/tests/python/crash.py
Normal file
45
lib/ldb/tests/python/crash.py
Normal file
@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Tests for crashing functions
|
||||
|
||||
import os
|
||||
from unittest import TestCase
|
||||
import os
|
||||
import sys
|
||||
import traceback
|
||||
|
||||
import ldb
|
||||
|
||||
|
||||
def segfault_detector(f):
|
||||
def wrapper(*args, **kwargs):
|
||||
pid = os.fork()
|
||||
if pid == 0:
|
||||
# child, crashing?
|
||||
try:
|
||||
f(*args, **kwargs)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
sys.stderr.flush()
|
||||
sys.stdout.flush()
|
||||
os._exit(0)
|
||||
|
||||
# parent, waiting
|
||||
pid2, status = os.waitpid(pid, 0)
|
||||
if os.WIFSIGNALED(status):
|
||||
signal = os.WTERMSIG(status)
|
||||
raise AssertionError("Failed with signal %d" % signal)
|
||||
|
||||
return wrapper
|
||||
|
||||
|
||||
class LdbDnCrashTests(TestCase):
|
||||
@segfault_detector
|
||||
def test_ldb_dn_explode_crash(self):
|
||||
for i in range(106, 150):
|
||||
dn = ldb.Dn(ldb.Ldb(), "a=b%s,c= " % (' ' * i))
|
||||
dn.validate()
|
||||
|
||||
if __name__ == '__main__':
|
||||
import unittest
|
||||
unittest.TestProgram()
|
@ -614,6 +614,7 @@ def test(ctx):
|
||||
os.mkdir(tmp_dir)
|
||||
pyret = samba_utils.RUN_PYTHON_TESTS(
|
||||
['tests/python/api.py',
|
||||
'tests/python/crash.py',
|
||||
'tests/python/index.py',
|
||||
'tests/python/repack.py'],
|
||||
extra_env={'SELFTEST_PREFIX': test_prefix})
|
||||
|
@ -184,9 +184,3 @@ class SegfaultTests(samba.tests.TestCase):
|
||||
def test_dcerpc_idl_inline_arrays(self):
|
||||
"""Inline arrays were incorrectly handled."""
|
||||
dnsserver.DNS_RPC_SERVER_INFO_DOTNET().pExtensions
|
||||
|
||||
@segfault_detector
|
||||
def test_ldb_dn_explode_crash(self):
|
||||
for i in range(106, 550, 5):
|
||||
dn = ldb.Dn(ldb.Ldb(), "a=b%s,c= " % (' ' * i))
|
||||
dn.validate()
|
||||
|
Reference in New Issue
Block a user