50 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/bash -eu
 | |
| # Copyright 2018 Google Inc.
 | |
| #
 | |
| # Licensed under the Apache License, Version 2.0 (the "License");
 | |
| # you may not use this file except in compliance with the License.
 | |
| # You may obtain a copy of the License at
 | |
| #
 | |
| #      http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| # Unless required by applicable law or agreed to in writing, software
 | |
| # distributed under the License is distributed on an "AS IS" BASIS,
 | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| # See the License for the specific language governing permissions and
 | |
| # limitations under the License.
 | |
| #
 | |
| ################################################################################
 | |
| 
 | |
| ./bootstrap.sh
 | |
| 
 | |
| # Limit the size of buffer allocations to avoid bogus OOM issues
 | |
| # https://github.com/libgd/libgd/issues/422
 | |
| sed -i'' -e 's/INT_MAX/100000/' "$SRC/libgd/src/gd_security.c"
 | |
| 
 | |
| ./configure --prefix="$WORK" --disable-shared
 | |
| make -j$(nproc) install
 | |
| 
 | |
| for target in Bmp Gd Gd2 Gif Jpeg Png Tga Tiff WBMP Webp; do
 | |
|     lowercase=$(echo $target | tr "[:upper:]" "[:lower:]")
 | |
|     $CXX $CXXFLAGS -std=c++11 -I"$WORK/include" -L"$WORK/lib" \
 | |
|       -DFUZZ_GD_FORMAT=$target \
 | |
|       $SRC/parser_target.cc -o $OUT/${lowercase}_target \
 | |
|       $LIB_FUZZING_ENGINE -lgd -Wl,-Bstatic -lz -Wl,-Bdynamic
 | |
| done
 | |
| 
 | |
| for fuzzers in $(find $SRC -name '*_fuzzer.cc'); do
 | |
|       fuzz_basename=$(basename -s .cc $fuzzers)
 | |
|       $CXX $CXXFLAGS -std=c++11 -I"$WORK/include" -L"$WORK/lib" \
 | |
|       $fuzzers -o $OUT/$fuzz_basename \
 | |
|       $LIB_FUZZING_ENGINE -lgd -Wl,-Bstatic -lz -Wl,-Bdynamic
 | |
| done
 | |
| 
 | |
| mkdir afl_testcases
 | |
| (cd afl_testcases; tar xvf "$SRC/afl_testcases.tgz")
 | |
| for format in bmp gif png webp; do
 | |
|     mkdir $format
 | |
|     find afl_testcases -type f -name '*.'$format -exec mv -n {} $format/ \;
 | |
|     zip -rj $format.zip $format/
 | |
|     cp $format.zip "$OUT/${format}_target_seed_corpus.zip"
 | |
| done
 |