1 # Run a fuzz test to verify robustness against corrupted/malicious data.
5 # We need our own pb_decode.o for the malloc support
7 env.Append(CPPDEFINES = {'PB_ENABLE_MALLOC': 1,
8 'PB_SYSTEM_HEADER': '\\"malloc_wrappers_syshdr.h\\"'})
9 env.Append(CPPPATH = [".", "$COMMON"])
12 env.Append(CPPDEFINES = {'PB_OLD_SYSHDR': env['SYSHDR']})
14 # Disable libmudflap, because it will confuse valgrind
15 # and other memory leak detection tools.
16 if '-fmudflap' in env["CCFLAGS"]:
17 env["CCFLAGS"].remove("-fmudflap")
18 env["LINKFLAGS"].remove("-fmudflap")
19 env["LIBS"].remove("mudflap")
22 strict.Append(CFLAGS = strict['CORECFLAGS'])
23 strict.Object("pb_decode_with_malloc.o", "$NANOPB/pb_decode.c")
24 strict.Object("pb_encode_with_malloc.o", "$NANOPB/pb_encode.c")
25 strict.Object("pb_common_with_malloc.o", "$NANOPB/pb_common.c")
27 # We want both pointer and static versions of the AllTypes message
28 env.Command("alltypes_static.proto", "#alltypes/alltypes.proto",
29 lambda target, source, env:
30 open(str(target[0]), 'w').write("package alltypes_static;\n"
31 + open(str(source[0])).read()))
32 env.Command("alltypes_pointer.proto", "#alltypes/alltypes.proto",
33 lambda target, source, env:
34 open(str(target[0]), 'w').write("package alltypes_pointer;\n"
35 + open(str(source[0])).read()))
37 p1 = env.NanopbProto(["alltypes_pointer", "alltypes_pointer.options"])
38 p2 = env.NanopbProto(["alltypes_static", "alltypes_static.options"])
39 fuzz = env.Program(["fuzztest.c",
40 "alltypes_pointer.pb.c",
41 "alltypes_static.pb.c",
42 "pb_encode_with_malloc.o",
43 "pb_decode_with_malloc.o",
44 "pb_common_with_malloc.o",
45 "$COMMON/malloc_wrappers.o"])
49 fuzzstub = env.Program(["fuzzstub.c",
50 "alltypes_pointer.pb.c",
51 "alltypes_static.pb.c",
52 "pb_encode_with_malloc.o",
53 "pb_decode_with_malloc.o",
54 "pb_common_with_malloc.o",
55 "$COMMON/malloc_wrappers.o"])