bd44b5aa08
Nix / Required Checks: Nix (push) Blocked by required conditions
Nix / check-zig-cache-hash (push) Waiting to run
Test / skip (push) Waiting to run
Test / Required Checks: Test (push) Blocked by required conditions
Test / build-bench (push) Blocked by required conditions
Test / list-examples (push) Blocked by required conditions
Test / Example ${{ matrix.dir }} (Windows) (push) Blocked by required conditions
Test / Example ${{ matrix.dir }} (push) Blocked by required conditions
Test / build-cmake (push) Blocked by required conditions
Test / test-lib-vt-pkgconfig (push) Blocked by required conditions
Test / build-flatpak (push) Blocked by required conditions
Test / build-snap (push) Blocked by required conditions
Test / build-linux (namespace-profile-ghostty-md-arm64) (push) Blocked by required conditions
Test / build-nix (namespace-profile-ghostty-md) (push) Blocked by required conditions
Test / build-libghostty-vt (aarch64-linux) (push) Blocked by required conditions
Test / build-libghostty-vt (aarch64-macos) (push) Blocked by required conditions
Test / build-libghostty-vt (wasm32-freestanding) (push) Blocked by required conditions
Test / build-libghostty-vt (x86_64-linux) (push) Blocked by required conditions
Test / build-libghostty-vt (x86_64-linux-musl) (push) Blocked by required conditions
Test / build-libghostty-vt (x86_64-macos) (push) Blocked by required conditions
Test / build-libghostty-vt (x86_64-windows-gnu) (push) Blocked by required conditions
Test / build-libghostty-vt-macos (aarch64-ios) (push) Blocked by required conditions
Test / build-libghostty-vt-macos (aarch64-macos) (push) Blocked by required conditions
Test / build-libghostty-vt-macos (x86_64-macos) (push) Blocked by required conditions
Test / build-libghostty-vt-android (aarch64-linux-android) (push) Blocked by required conditions
Test / build-libghostty-vt-android (arm-linux-androideabi) (push) Blocked by required conditions
Test / build-libghostty-vt-android (x86_64-linux-android) (push) Blocked by required conditions
Test / build-libghostty-vt-windows (push) Blocked by required conditions
Test / build-libghostty-windows-gnu (push) Blocked by required conditions
Test / build-linux (namespace-profile-ghostty-md) (push) Blocked by required conditions
Test / build-linux-libghostty (push) Blocked by required conditions
Test / build-nix (namespace-profile-ghostty-md-arm64) (push) Blocked by required conditions
Test / build-dist (push) Blocked by required conditions
Test / build-dist-lib-vt (push) Blocked by required conditions
Test / trigger-snap (push) Blocked by required conditions
Test / trigger-flatpak (push) Blocked by required conditions
Test / build-macos (push) Blocked by required conditions
Test / build-macos-freetype (push) Blocked by required conditions
Test / test (push) Blocked by required conditions
Test / test-lib-vt (push) Blocked by required conditions
Test / GTK x11=false wayland=false (push) Blocked by required conditions
Test / GTK x11=true wayland=false (push) Blocked by required conditions
Test / GTK x11=false wayland=true (push) Blocked by required conditions
Test / GTK x11=true wayland=true (push) Blocked by required conditions
Test / Build -Dsimd=false (push) Blocked by required conditions
Test / Build -Dsimd=true (push) Blocked by required conditions
Test / Build -Dsentry=false (push) Blocked by required conditions
Test / Build -Dsentry=true (push) Blocked by required conditions
Test / test-macos (push) Blocked by required conditions
Test / test-windows (push) Blocked by required conditions
Test / Build -Di18n=false (push) Blocked by required conditions
Test / Build -Di18n=true (push) Blocked by required conditions
Test / Build test/fuzz-libghostty (push) Blocked by required conditions
Test / zig-fmt (push) Blocked by required conditions
Test / GitHub Actions Pins (push) Blocked by required conditions
Test / prettier (push) Blocked by required conditions
Test / swiftlint (push) Blocked by required conditions
Test / alejandra (push) Blocked by required conditions
Test / typos (push) Blocked by required conditions
Test / shellcheck (push) Blocked by required conditions
Test / translations (push) Blocked by required conditions
Test / blueprint-compiler (push) Blocked by required conditions
Test / Test pkg/wuffs (push) Blocked by required conditions
Test / Test build on Debian 13 (push) Blocked by required conditions
Test / valgrind (push) Blocked by required conditions
77 lines
2.2 KiB
Zig
77 lines
2.2 KiB
Zig
const std = @import("std");
|
|
const afl = @import("afl");
|
|
|
|
/// Possible fuzz targets. Each fuzz target is implemented in
|
|
/// src/fuzz_<name>.zig and has an initial corpus in corpus/<name>-initial.
|
|
const Fuzzer = struct {
|
|
name: []const u8,
|
|
|
|
pub fn source(comptime self: Fuzzer) []const u8 {
|
|
return "src/fuzz_" ++ self.name ++ ".zig";
|
|
}
|
|
|
|
pub fn corpus(comptime self: Fuzzer) []const u8 {
|
|
// Change this suffix to use cmin vs initial corpus
|
|
return "corpus/" ++ self.name ++ "-cmin";
|
|
}
|
|
};
|
|
|
|
const fuzzers: []const Fuzzer = &.{
|
|
.{ .name = "osc" },
|
|
.{ .name = "parser" },
|
|
.{ .name = "stream" },
|
|
};
|
|
|
|
pub fn build(b: *std.Build) void {
|
|
// Resolve a "generic" host target so the emitted LLVM bitcode does not
|
|
// contain native CPU features (e.g. +zcm, +zcz) that the LLVM version
|
|
// bundled with afl-cc may not recognise, which would produce warnings.
|
|
const target = b.resolveTargetQuery(.{});
|
|
const optimize = b.standardOptimizeOption(.{});
|
|
|
|
const ghostty_dep = b.lazyDependency("ghostty", .{
|
|
.simd = false,
|
|
});
|
|
|
|
inline for (fuzzers) |fuzzer| {
|
|
const run_step = b.step(
|
|
b.fmt("run-{s}", .{fuzzer.name}),
|
|
b.fmt("Run {s} with afl-fuzz", .{fuzzer.name}),
|
|
);
|
|
|
|
const lib_mod = b.createModule(.{
|
|
.root_source_file = b.path(fuzzer.source()),
|
|
.target = target,
|
|
.optimize = optimize,
|
|
});
|
|
if (ghostty_dep) |dep| {
|
|
lib_mod.addImport(
|
|
"ghostty-vt",
|
|
dep.module("ghostty-vt"),
|
|
);
|
|
}
|
|
|
|
const lib = b.addLibrary(.{
|
|
.name = fuzzer.name,
|
|
.root_module = lib_mod,
|
|
});
|
|
lib.root_module.stack_check = false;
|
|
lib.root_module.fuzz = true;
|
|
|
|
const exe = afl.addInstrumentedExe(b, lib);
|
|
const run = afl.addFuzzerRun(
|
|
b,
|
|
exe,
|
|
b.path(fuzzer.corpus()),
|
|
b.path(b.fmt("afl-out/{s}", .{fuzzer.name})),
|
|
);
|
|
run_step.dependOn(&run.step);
|
|
|
|
const exe_install = b.addInstallBinFile(
|
|
exe,
|
|
"fuzz-" ++ fuzzer.name,
|
|
);
|
|
b.getInstallStep().dependOn(&exe_install.step);
|
|
}
|
|
}
|