Reference implementations of PQC
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

44 строки
1.2 KiB

  1. """
  2. Checks that no dynamic memory functions are used
  3. """
  4. import pytest
  5. import helpers
  6. import pqclean
  7. @pytest.mark.parametrize(
  8. 'implementation,test_dir,impl_path, init, destr',
  9. [(impl, *helpers.isolate_test_files(impl.path(), 'test_functest_'))
  10. for impl in pqclean.Scheme.all_implementations()],
  11. ids=[str(impl) for impl in pqclean.Scheme.all_implementations()],
  12. )
  13. @helpers.skip_windows()
  14. @helpers.filtered_test
  15. def test_dynamic_memory(implementation, test_dir, impl_path, init, destr):
  16. init()
  17. # 'make' will take care of not rebuilding existing library files
  18. helpers.make(working_dir=impl_path)
  19. scheme_name = implementation.scheme.name
  20. out = helpers.run_subprocess(
  21. ['nm', '-g', 'lib{}_{}.a'.format(scheme_name, implementation.name)],
  22. impl_path,
  23. )
  24. lines = out.strip().split("\n")
  25. for line in lines:
  26. for function in ['malloc', 'free', 'realloc', 'calloc']:
  27. if line.endswith('U {}'.format(function)):
  28. raise AssertionError(
  29. "Illegal use of dynamic memory function "
  30. "'{function}'".format(function=function))
  31. destr()
  32. if __name__ == '__main__':
  33. import sys
  34. pytest.main(sys.argv)