fix llvm-dict2file
MODIFY
GNUmakefile
GNUmakefile
@@ -503,21 +503,21 @@ code-format:
./.custom-format.py -i instrumentation/*.h
./.custom-format.py -i instrumentation/*.cc
./.custom-format.py -i instrumentation/*.c
+ ./.custom-format.py -i *.h
+ ./.custom-format.py -i *.c
@#./.custom-format.py -i custom_mutators/*/*.c* # destroys libfuzzer :-(
@#./.custom-format.py -i custom_mutators/*/*.h # destroys honggfuzz :-(
./.custom-format.py -i utils/*/*.c*
./.custom-format.py -i utils/*/*.h
./.custom-format.py -i test/*.c
+ ./.custom-format.py -i frida_mode/src/*.c
+ ./.custom-format.py -i frida_mode/include/*.h
+ -./.custom-format.py -i frida_mode/src/*/*.c
./.custom-format.py -i qemu_mode/libcompcov/*.c
./.custom-format.py -i qemu_mode/libcompcov/*.cc
./.custom-format.py -i qemu_mode/libcompcov/*.h
./.custom-format.py -i qemu_mode/libqasan/*.c
./.custom-format.py -i qemu_mode/libqasan/*.h
- ./.custom-format.py -i frida_mode/src/*.c
- ./.custom-format.py -i frida_mode/include/*.h
- -./.custom-format.py -i frida_mode/src/*/*.c
- ./.custom-format.py -i *.h
- ./.custom-format.py -i *.c
.PHONY: test_build

MODIFY
docs/Changelog.md
docs/Changelog.md
@@ -41,6 +41,7 @@ sending a mail to <afl-users+subscribe@googlegroups.com>.
- Leak Sanitizer (AFL_USE_LSAN) added by Joshua Rogers, thanks!
- Removed InsTrim instrumentation as it is not as good as PCGUARD
- Removed automatic linking with -lc++ for LTO mode
+ - Fixed a crash in llvm dict2file when a strncmp length was -1
- utils/aflpp_driver:
- aflpp_qemu_driver_hook fixed to work with qemu_mode
- aflpp_driver now compiled with -fPIC

MODIFY
instrumentation/afl-llvm-dict2file.so.cc
instrumentation/afl-llvm-dict2file.so.cc
@@ -426,7 +426,7 @@ bool AFLdict2filePass::runOnModule(Module &M) {
ConstantInt *ilen = dyn_cast<ConstantInt>(op2);
if (ilen) {
- uint64_t literalLength = Str2.size();
+ uint64_t literalLength = Str2.length();
uint64_t optLength = ilen->getZExtValue();
if (literalLength + 1 == optLength) {
@@ -434,6 +434,8 @@ bool AFLdict2filePass::runOnModule(Module &M) {
}
+ if (optLength > Str2.length()) { optLength = Str2.length(); }
+
}
valueMap[Str1P] = new std::string(Str2);
@@ -532,6 +534,7 @@ bool AFLdict2filePass::runOnModule(Module &M) {
uint64_t literalLength = optLen;
optLen = ilen->getZExtValue();
+ if (optLen > thestring.length()) { optLen = thestring.length(); }
if (optLen < 2) { continue; }
if (literalLength + 1 == optLen) { // add null byte
thestring.append("\0", 1);

MODIFY
qemu_mode/libqasan/libqasan.c
qemu_mode/libqasan/libqasan.c
@@ -70,8 +70,7 @@ __attribute__((constructor)) void __libqasan_init() {
__libqasan_init_hooks();
- if (getenv("AFL_INST_LIBS") || getenv("QASAN_HOTPACH"))
- __libqasan_hotpatch();
+ if (getenv("AFL_INST_LIBS") || getenv("QASAN_HOTPACH")) __libqasan_hotpatch();
#ifdef DEBUG
__qasan_debug = getenv("QASAN_DEBUG") != NULL;

fix llvm-dict2file