Attempts to verify all the properties defined in the security model, while also being portable and able to run on many platforms.
51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
# Run a fuzz test to verify robustness against corrupted/malicious data.
|
|
|
|
Import("env")
|
|
|
|
# We need our own pb_decode.o for the malloc support
|
|
env = env.Clone()
|
|
env.Append(CPPDEFINES = {'PB_ENABLE_MALLOC': 1,
|
|
'PB_SYSTEM_HEADER': '\\"fuzz_syshdr.h\\"'})
|
|
env.Append(CPPPATH = ".")
|
|
|
|
if 'SYSHDR' in env:
|
|
env.Append(CPPDEFINES = {'PB_OLD_SYSHDR': env['SYSHDR']})
|
|
|
|
# Disable libmudflap, because it will confuse valgrind
|
|
# and other memory leak detection tools.
|
|
if '-fmudflap' in env["CCFLAGS"]:
|
|
env["CCFLAGS"].remove("-fmudflap")
|
|
env["LINKFLAGS"].remove("-fmudflap")
|
|
env["LIBS"].remove("mudflap")
|
|
|
|
strict = env.Clone()
|
|
strict.Append(CFLAGS = strict['CORECFLAGS'])
|
|
strict.Object("pb_decode_with_malloc.o", "$NANOPB/pb_decode.c")
|
|
strict.Object("pb_encode_with_malloc.o", "$NANOPB/pb_encode.c")
|
|
strict.Object("pb_common_with_malloc.o", "$NANOPB/pb_common.c")
|
|
|
|
# We want both pointer and static versions of the AllTypes message
|
|
env.Command("alltypes_static.proto", "#alltypes/alltypes.proto",
|
|
lambda target, source, env:
|
|
open(str(target[0]), 'w').write("package alltypes_static;\n"
|
|
+ open(str(source[0])).read()))
|
|
env.Command("alltypes_pointer.proto", "#alltypes/alltypes.proto",
|
|
lambda target, source, env:
|
|
open(str(target[0]), 'w').write("package alltypes_pointer;\n"
|
|
+ open(str(source[0])).read()))
|
|
|
|
p1 = env.NanopbProto(["alltypes_pointer", "alltypes_pointer.options"])
|
|
p2 = env.NanopbProto(["alltypes_static", "alltypes_static.options"])
|
|
fuzz = env.Program(["fuzztest.c",
|
|
"alltypes_pointer.pb.c",
|
|
"alltypes_static.pb.c",
|
|
"pb_encode_with_malloc.o",
|
|
"pb_decode_with_malloc.o",
|
|
"pb_common_with_malloc.o",
|
|
"malloc_wrappers.c"])
|
|
Depends([p1, p2, fuzz], ["fuzz_syshdr.h", "malloc_wrappers.h"])
|
|
|
|
env.RunTest(fuzz)
|
|
|
|
|