1# Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler 2# Copyright 2015, Daniel Axtens, IBM Corporation 3# zlib license, see zlib.h 4 5CC= 6CFLAGS= 7EXE= 8SRCDIR= 9SRCTOP= 10LIBNAME= 11TEST_LDFLAGS=-L.. ../$(LIBNAME).a 12WITH_FUZZERS= 13 14COMPATTESTS = 15QEMU_RUN= 16QEMU_VER:=$(shell command -v $(QEMU_RUN) --version 2> /dev/null) 17 18all: oldtests cvetests $(COMPATTESTS) fuzzer ghtests 19 20oldtests: #set by ../configure 21check_cross_dep: 22ifneq (,$(QEMU_RUN)) 23ifeq (,$(QEMU_VER)) 24 $(error "You need QEMU to run tests on non-native platform") 25endif 26endif 27 28ALL_SRC_FILES := $(wildcard ../*) 29 30# Only check the fuzzer when it is a stand-alone executable. 31ifneq (,$(LIB_FUZZING_ENGINE)) 32fuzzer: 33else 34 ifeq (0,$(WITH_FUZZERS)) 35fuzzer: 36 else 37fuzzer: 38 @${QEMU_RUN} ../checksum_fuzzer$(EXE) $(ALL_SRC_FILES) && \ 39 ${QEMU_RUN} ../compress_fuzzer$(EXE) $(ALL_SRC_FILES) && \ 40 ${QEMU_RUN} ../example_small_fuzzer$(EXE) $(ALL_SRC_FILES) && \ 41 ${QEMU_RUN} ../example_large_fuzzer$(EXE) $(ALL_SRC_FILES) && \ 42 ${QEMU_RUN} ../example_flush_fuzzer$(EXE) $(ALL_SRC_FILES) && \ 43 ${QEMU_RUN} ../example_dict_fuzzer$(EXE) $(ALL_SRC_FILES) && \ 44 ${QEMU_RUN} ../minigzip_fuzzer$(EXE) $(ALL_SRC_FILES) 45 endif 46endif 47 48teststatic: check_cross_dep 49 @TMPST=tmpst_$$$$; \ 50 HELLOST=tmphellost_$$$$; \ 51 if echo hello world | ${QEMU_RUN} ../minigzip$(EXE) > $$HELLOST && ${QEMU_RUN} ../minigzip$(EXE) -d < $$HELLOST && ${QEMU_RUN} ../example$(EXE) $$TMPST && ${QEMU_RUN} ../adler32_test$(EXE); then \ 52 echo ' *** zlib test OK ***'; \ 53 else \ 54 echo ' *** zlib test FAILED ***'; exit 1; \ 55 fi; \ 56 rm -f $$TMPST $$HELLOST 57 58testshared: check_cross_dep 59 @LD_LIBRARY_PATH=`pwd`/..:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \ 60 LD_LIBRARYN32_PATH=`pwd`/..:$(LD_LIBRARYN32_PATH) ; export LD_LIBRARYN32_PATH; \ 61 DYLD_LIBRARY_PATH=`pwd`/..:$(DYLD_LIBRARY_PATH) ; export DYLD_LIBRARY_PATH; \ 62 SHLIB_PATH=`pwd`/..:$(SHLIB_PATH) ; export SHLIB_PATH; \ 63 TMPSH=tmpsh_$$$$; \ 64 HELLOSH=tmphellosh_$$$$; \ 65 if echo hello world | ${QEMU_RUN} ../minigzipsh$(EXE) > $$HELLOSH && ${QEMU_RUN} ../minigzipsh$(EXE) -d < $$HELLOSH && ${QEMU_RUN} ../examplesh$(EXE) $$TMPSH && ${QEMU_RUN} ../adler32_testsh$(EXE); then \ 66 echo ' *** zlib shared test OK ***'; \ 67 else \ 68 echo ' *** zlib shared test FAILED ***'; exit 1; \ 69 fi; \ 70 rm -f $$TMPSH $$HELLOSH 71 72cvetests: testCVEinputs 73 74# Tests requiring zlib-ng to be built with --zlib-compat 75compattests: testCVE-2003-0107 76 77testCVEinputs: check_cross_dep 78 @EXE=$(EXE) QEMU_RUN="${QEMU_RUN}" $(SRCDIR)/testCVEinputs.sh 79 80testCVE-2003-0107: CVE-2003-0107$(EXE) check_cross_dep 81 @if ${QEMU_RUN} ./CVE-2003-0107$(EXE); then \ 82 echo ' *** zlib not vulnerable to CVE-2003-0107 ***'; \ 83 else \ 84 echo ' *** zlib VULNERABLE to CVE-2003-0107 ***'; exit 1; \ 85 fi 86 87CVE-2003-0107.o: $(SRCDIR)/CVE-2003-0107.c 88 $(CC) $(CFLAGS) -I.. -I$(SRCTOP) -c -o $@ $(SRCDIR)/CVE-2003-0107.c 89 90CVE-2003-0107$(EXE): CVE-2003-0107.o 91 $(CC) $(CFLAGS) -o $@ CVE-2003-0107.o $(TEST_LDFLAGS) 92 93.PHONY: ghtests 94ghtests: testGH-361 testGH-364 95 96.PHONY: testGH-361 97testGH-361: 98 $(QEMU_RUN) ../minigzip$(EXE) -4 <$(SRCDIR)/GH-361/test.txt >/dev/null 99 100switchlevels$(EXE): $(SRCDIR)/switchlevels.c 101 $(CC) $(CFLAGS) -I.. -I$(SRCTOP) -o $@ $< $(TEST_LDFLAGS) 102 103.PHONY: testGH-364 104testGH-364: switchlevels$(EXE) 105 $(QEMU_RUN) ./switchlevels$(EXE) 1 5 9 3 <$(SRCDIR)/GH-364/test.bin >/dev/null 106 107clean: 108 rm -f *.o *.gcda *.gcno *.gcov 109 rm -f CVE-2003-0107$(EXE) switchlevels$(EXE) 110 111distclean: 112 rm -f Makefile 113