mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
CVE-2020-25722 pytests: add reverse lookup dict for LDB error codes
You can give ldb_err() it a number, an LdbError, or a sequence of numbers, and it will return the corresponding strings. Examples: ldb_err(68) # "LDB_ERR_ENTRY_ALREADY_EXISTS" LDB_ERR_LUT[68] # "LDB_ERR_ENTRY_ALREADY_EXISTS" expected = (ldb.ERR_INSUFFICIENT_ACCESS_RIGHTS, ldb.ERR_INVALID_CREDENTIALS) try: foo() except ldb.LdbError as e: self.fail(f"got {ldb_err(e)}, expected one of {ldb_err(expected)}") BUG: https://bugzilla.samba.org/show_bug.cgi?id=14564 Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
parent
2c4aee1145
commit
de24916a82
@ -61,6 +61,22 @@ BINDIR = os.path.abspath(os.path.join(os.path.dirname(__file__),
|
||||
|
||||
HEXDUMP_FILTER = bytearray([x if ((len(repr(chr(x))) == 3) and (x < 127)) else ord('.') for x in range(256)])
|
||||
|
||||
LDB_ERR_LUT = {v: k for k,v in vars(ldb).items() if k.startswith('ERR_')}
|
||||
|
||||
def ldb_err(v):
|
||||
if isinstance(v, ldb.LdbError):
|
||||
v = v.args[0]
|
||||
|
||||
if v in LDB_ERR_LUT:
|
||||
return LDB_ERR_LUT[v]
|
||||
|
||||
try:
|
||||
return f"[{', '.join(LDB_ERR_LUT.get(x, x) for x in v)}]"
|
||||
except TypeError as e:
|
||||
print(e)
|
||||
return v
|
||||
|
||||
|
||||
def DynamicTestCase(cls):
|
||||
cls.setUpDynamicTestCases()
|
||||
return cls
|
||||
|
Loading…
Reference in New Issue
Block a user