Skip to content

[pull] master from google:master - #211

Merged
pull[bot] merged 1 commit into
threatcode:masterfrom
google:master
Aug 18, 2026
Merged

[pull] master from google:master#211
pull[bot] merged 1 commit into
threatcode:masterfrom
google:master

Conversation

@pull

@pull pull Bot commented Aug 18, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

[hobbes](https://github.com/morganstanley/hobbes) is an embedded
compiler and
JIT for structured data, used to write low-latency trading systems and
to store
and query the data they produce.

I am the primary contact and a maintainer on the project; the harnesses
and the
build script were merged upstream in

[morganstanley/hobbes#531](morganstanley/hobbes#531).

## Fuzz targets

Three harnesses, covering the surfaces that take untrusted bytes:

| target | surface |
|---|---|
| `fuzz-type-decode` | the binary type decoder |
| `fuzz-fregion-reader` | the fregion structured-log file reader |
| `fuzz-parse-expr` | the expression parser (ships a dictionary and a
seed corpus) |

They live in `fuzz/` in the project tree alongside the real build
script, which
`projects/hobbes/build.sh` is a one-line wrapper around, so that a
change to a
harness and the change to its build land in one commit.

## Configuration notes

- **MemorySanitizer is not enabled.** hobbes links LLVM from an apt
package, and
  MSan needs every dependency instrumented.
- **Centipede is not enabled.** Its prebuilt runner is compiled against
libc++,
while this build must drop `-stdlib=libc++` to match the libstdc++ LLVM
it
  links; the two cannot be linked together (`undefined reference to
  std::__1::bad_function_call`).
- **A per-target `.options` file disables ASan's
`detect_container_overflow`.**
hobbes links an LLVM that OSS-Fuzz did not build, so the two disagree
about
  `std::vector`'s container annotations.
- **`fuzz-parse-expr` also disables leak detection.** It reuses one
`hobbes::cc`
whose boot-code arenas are not reclaimed per input, so LSan reports them
  (23166 bytes in 422 allocations, from `hobbes::cc::cc()`).

## Testing

Built and run locally against the current `main` of the project, in the
OSS-Fuzz container:

| command | result |
|---|---|
| `build_fuzzers --sanitizer address` + `check_build` | pass |
| `build_fuzzers --sanitizer undefined` + `check_build` | pass |
| `build_fuzzers --engine afl` + `check_build` | pass |
| `build_fuzzers --engine honggfuzz` + `check_build` | pass |
| `run_fuzzer` × 3 targets, `-runs=2000` | pass, no crashes |

`$OUT` is about 120 MB, and a fuzzer build takes roughly three minutes
on eight
cores. `ldd` on each target inside `base-runner` resolves every
dependency;
LLVM is linked statically.

The same harnesses also run on every pull request to the project through
ClusterFuzzLite, sharing this build script.
@pull pull Bot locked and limited conversation to collaborators Aug 18, 2026
@pull pull Bot added the ⤵️ pull label Aug 18, 2026
@pull
pull Bot merged commit 06a694e into threatcode:master Aug 18, 2026
13 of 14 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant