# Update just these two on source update %global gitdate 20230922 %global gitcommit 62d63a59230bb5f5c6e54cddd381b9425dba3726 %global gitshort %(echo %gitcommit | cut -c1-8) %global extraver %{gitdate}git%{gitshort} Name: aflnet # Version is present only in config.h Version: 2.56b^%{extraver} Release: %autorelease Summary: AFLNet: A Greybox Fuzzer for Network Protocols License: Apache-2.0 URL: https://github.com/aflnet/aflnet Source0: %{url}/archive/%{gitcommit}/%{name}-%{gitcommit}.tar.gz # LLVM mode supports any architecture, but does not build with recent llvm # See docs/INSTALL ExclusiveArch: %{ix86} x86_64 BuildRequires: graphviz-devel libcap-devel BuildRequires: gcc make clang # llvm_mode requires also llvm 12, which does not work: # https://github.com/aflnet/aflnet/issues/113 #BuildRequires: clang15-devel llvm12-devel #Requires: %description AFLNet is a greybox fuzzer for protocol implementations. Unlike existing protocol fuzzers, it takes a mutational approach and uses state-feedback, in addition to code-coverage feedback, to guide the fuzzing process. AFLNet is seeded with a corpus of recorded message exchanges between the server and an actual client. No protocol specification or message grammars are required. It acts as a client and replays variations of the original sequence of messages sent to the server and retains those variations that were effective at increasing the coverage of the code or state space. To identify the server states that are exercised by a message sequence, AFLNet uses the server’s response codes. From this feedback, AFLNet identifies progressive regions in the state space, and systematically steers towards such regions. %prep %autosetup -n %{name}-%{gitcommit} %build %make_build PREFIX=%{_prefix} HELPER_PATH=%{_libdir}/afl # %make_build -C llvm_mode AFL_NO_X86=1 LLVM_CONFIG=llvm-config-12 CC=clang-15 %install %make_install PREFIX=%{_prefix} HELPER_PATH=%{_libdir}/afl %files %license LICENSE %doc README.md README-AFL.md %doc %{_datadir}/doc/afl %{_bindir}/afl-* %{_bindir}/aflnet-replay %{_datadir}/afl %{_libdir}/afl %changelog %autochangelog