Add a fuzz testing stub for ability to use external generators also
[apps/agl-service-can-low-level.git] / tests / fuzztest / SConscript
1 # Run a fuzz test to verify robustness against corrupted/malicious data.
2
3 Import("env")
4
5 # We need our own pb_decode.o for the malloc support
6 env = env.Clone()
7 env.Append(CPPDEFINES = {'PB_ENABLE_MALLOC': 1,
8                          'PB_SYSTEM_HEADER': '\\"fuzz_syshdr.h\\"'})
9 env.Append(CPPPATH = ".")
10
11 if 'SYSHDR' in env:
12     env.Append(CPPDEFINES = {'PB_OLD_SYSHDR': env['SYSHDR']})
13
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")
20
21 strict = env.Clone()
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")
26
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()))
36
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                     "malloc_wrappers.c"])
46 Depends([p1, p2, fuzz], ["fuzz_syshdr.h", "malloc_wrappers.h"])
47
48 env.RunTest(fuzz)
49
50 fuzzstub = env.Program(["fuzzstub.c",
51                     "alltypes_pointer.pb.c",
52                     "alltypes_static.pb.c",
53                     "pb_encode_with_malloc.o",
54                     "pb_decode_with_malloc.o",
55                     "pb_common_with_malloc.o",
56                     "malloc_wrappers.c"])
57
58