e56b2e5556
* fixes dynamic memory allocation test. previously a function called freeze() would trigger it * this adds DilithiumII. Preprocessor conditionals still need to be removed * fix ms Makefile * fix MS compiler warnings * clean-up * remove preprocessor conditionals * add dilithium3 * add dilithium4 * add duplicate consistency checks * SHA2 state constants in common * clean up symmetric.h * Port SPHINCS+-SHA256 to sha256ctx struct * Implement ctx struct for fips202 * Port Kyber{512,768,1024} to fips202 ctx struct * Port NewHope to fips202 structs * Port SPHINCS+-SHAKE256 to fips202 ctx structs * Use opaque fips202 structs in MQDSS * port dilithium to use fips202 ctx structs * include -Wredundant-decls * remove comment; format NTT constants * reduce casts in power2round
43 righe
1.2 KiB
Python
43 righe
1.2 KiB
Python
"""
|
|
Checks that no dynamic memory functions are used
|
|
"""
|
|
|
|
import pqclean
|
|
import helpers
|
|
|
|
|
|
def test_dynamic_memory():
|
|
for scheme in pqclean.Scheme.all_schemes():
|
|
for implementation in scheme.implementations:
|
|
# Keep this loop outside, to allow multiple assertions
|
|
for function in ['malloc', 'free', 'realloc', 'calloc']:
|
|
yield (check_dynamic_memory, implementation, function)
|
|
|
|
|
|
@helpers.filtered_test
|
|
@helpers.skip_windows()
|
|
def check_dynamic_memory(implementation, function):
|
|
# 'make' will take care of not rebuilding existing library files
|
|
helpers.make(working_dir=implementation.path())
|
|
scheme_name = implementation.scheme.name
|
|
out = helpers.run_subprocess(
|
|
['nm', '-g', 'lib{}_{}.a'.format(scheme_name, implementation.name)],
|
|
implementation.path()
|
|
)
|
|
|
|
lines = out.strip().split("\n")
|
|
|
|
for line in lines:
|
|
if line.endswith('U {}'.format(function)):
|
|
raise AssertionError(
|
|
"Illegal use of dynamic memory function '{}'".format(function))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
try:
|
|
import nose2
|
|
nose2.main()
|
|
except ImportError:
|
|
import nose
|
|
nose.runmodule()
|