| #!/bin/bash -eu |
| # Copyright 2021 Google LLC |
| # |
| # 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. |
| # |
| ################################################################################ |
| |
| function copy_lib |
| { |
| local fuzzer_path=$1 |
| local lib=$2 |
| cp $(ldd ${fuzzer_path} | grep "${lib}" | awk '{ print $3 }') ${OUT}/lib |
| } |
| |
| mkdir -p $OUT/lib |
| |
| git apply --ignore-whitespace $SRC/patch.diff |
| # build project |
| ./configure --enable-fuzzer --enable-address-sanitizer |
| # make tries to compile regular programs as fuzz targets |
| # so -i flag ignores these errors |
| make -i -j$(nproc) |
| make -i install |
| # use shared libraries |
| ldconfig |
| ls ./build/bin/local/fuzzer_* | while read i; do |
| patchelf --set-rpath '$ORIGIN/lib' ${i} |
| copy_lib ${i} libfreeradius |
| copy_lib ${i} talloc |
| copy_lib ${i} kqueue |
| cp ${i} $OUT/ |
| done |
| cp -r /usr/local/share/freeradius/dictionary $OUT/dict |
| # export FR_DICTIONARY_DIR=/out/dictionary/ |
| # export FR_LIBRARY_PATH=/out/lib/ |