about summary refs log tree commit diff
path: root/patches/fuzzolic-unbundle.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/fuzzolic-unbundle.patch')
-rw-r--r--patches/fuzzolic-unbundle.patch108
1 files changed, 108 insertions, 0 deletions
diff --git a/patches/fuzzolic-unbundle.patch b/patches/fuzzolic-unbundle.patch
new file mode 100644
index 0000000..803f621
--- /dev/null
+++ b/patches/fuzzolic-unbundle.patch
@@ -0,0 +1,108 @@
+commit 24044a2d0341cfdd3c7cc7320cbbd49591ef28ce
+Author: Nguyễn Gia Phong <cnx@loang.net>
+Date:   2025-04-29 16:44:20 +0900
+
+    Unbundle required utilities
+
+diff --git a/fuzzolic/executor.py b/fuzzolic/executor.py
+index f2639eb8da6a..06d0253a3b07 100644
+--- a/fuzzolic/executor.py
++++ b/fuzzolic/executor.py
+@@ -21,14 +21,9 @@ from . import minimizer_qsym
+ from . import minimizer
+ 
+ SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
+-SOLVER_SMT_BIN = SCRIPT_DIR + '/../solver/solver-smt'
+-SOLVER_FUZZY_BIN = SCRIPT_DIR + '/../solver/solver-fuzzy'
+-TRACER_BIN = SCRIPT_DIR + '/../tracer/x86_64-linux-user/qemu-x86_64'
+-
+-if 'AFL_PATH' not in os.environ:
+-    AFL_PATH = SCRIPT_DIR + '/../../AFLplusplus/'
+-else:
+-    AFL_PATH = os.environ['AFL_PATH']
++SOLVER_SMT_BIN = 'solver-smt'
++SOLVER_FUZZY_BIN = 'solver-fuzzy'
++TRACER_BIN = 'qemu-x86_64'
+ 
+ SOLVER_WAIT_TIME_AT_STARTUP = 0.0010
+ SOLVER_TIMEOUT = 1000
+@@ -84,15 +79,12 @@ class Executor(object):
+                 sys.exit('ERROR: invalid AFL workdir')
+             self.afl = os.path.abspath(afl)
+             self.minimizer = minimizer_qsym.TestcaseMinimizer(
+-                [binary] + binary_args, AFL_PATH, output_dir, True, input_fixed_name)
++                [binary] + binary_args, output_dir, True, input_fixed_name)
+             #  self.minimizer = minimizer.TestcaseMinimizer([binary] + binary_args, self.global_bitmap)
+         else:
+             self.afl = None
+-            if minimizer_qsym.is_afl_showmap_available():
+-                self.minimizer = minimizer_qsym.TestcaseMinimizer(
+-                    [binary] + binary_args, AFL_PATH, output_dir, True, input_fixed_name)
+-            else:
+-                self.minimizer = minimizer.TestcaseMinimizer([binary] + binary_args, self.global_bitmap)
++            self.minimizer = minimizer_qsym.TestcaseMinimizer(
++                [binary] + binary_args, output_dir, True, input_fixed_name)
+ 
+         self.afl_processed_testcases = set()
+         self.afl_alt_processed_testcases = set()
+@@ -126,16 +118,8 @@ class Executor(object):
+ 
+         if use_symbolic_models:
+             plt_info_file = self.__get_root_dir() + "/plt_info.txt"
+-            p = subprocess.Popen(
+-                                [
+-                                    SCRIPT_DIR + "/find_models_addrs.py",
+-                                    "-o", plt_info_file,
+-                                    binary
+-                                ],
+-                                # stderr=subprocess.DEVNULL,
+-                                # stdin=subprocess.DEVNULL,
+-                                )
+-            p.wait()
++            subprocess.run(["fuzzolic-find-models-addrs",
++                            "-o", plt_info_file, binary])
+             self.plt_info = plt_info_file
+         else:
+             self.plt_info = None
+diff --git a/fuzzolic/minimizer_qsym.py b/fuzzolic/minimizer_qsym.py
+index 6d0170577392..1c31df0b9f0a 100644
+--- a/fuzzolic/minimizer_qsym.py
++++ b/fuzzolic/minimizer_qsym.py
+@@ -81,15 +81,13 @@ def fix_at_file(cmd, testcase):
+ 
+     return cmd, stdin
+ 
+-def is_afl_showmap_available():
+-    return os.path.exists(os.path.join(SCRIPT_DIR, "../utils/afl-showmap"))
+ 
+ class TestcaseMinimizer(object):
+-    def __init__(self, cmd, afl_path, out_dir, qemu_mode, fixed_name, map_size=MAP_SIZE):
++    def __init__(self, cmd, out_dir, qemu_mode, fixed_name, map_size=MAP_SIZE):
+         self.cmd = cmd
+         self.qemu_mode = qemu_mode
+-        self.showmap = os.path.join(afl_path, "afl-showmap")
+-        self.showmap_fork = os.path.join(SCRIPT_DIR, "../utils/afl-showmap")
++        self.showmap = "afl-showmap"
++        self.showmap_fork = "fuzzolic-showmap"
+         self.bitmap_file = os.path.join(out_dir, "afl-bitmap")
+         self.crash_bitmap_file = os.path.join(out_dir, "afl-crash-bitmap")
+         _, self.temp_file = tempfile.mkstemp(dir=out_dir)
+@@ -225,16 +223,8 @@ class TestcaseMinimizer(object):
+         return interesting
+ 
+     def is_interesting_testcase_fork(self, bitmap, my_bitmap_file=None):
+-        if my_bitmap_file is None:
+-            my_bitmap_file = self.bitmap_file
+-
+-        cmd = [
+-            SCRIPT_DIR + '/../utils/merge_bitmap',
+-            bitmap,
+-            my_bitmap_file
+-        ]
+-        # print(cmd)
+-
++        cmd = ('fuzzolic-merge-bitmap', bitmap,
++               my_bitmap_file or self.bitmap_file)
+         with open(os.devnull, "wb") as devnull:
+             proc = sp.Popen(cmd, stdin=None, stdout=devnull, stderr=devnull)
+             proc.wait()