Merge PR #23 head4097a21adb(Velinus's "Make Apple resource sampling lifecycle safe") into the Layer-2 integration branch, preserving all contributor commits unchanged. Retained proven fixes from4097a21: - Sampler creation moves into start_finalizer() so a sampler std::system_error is reported synchronously to the caller. Inca8600athe sampler was constructed inside finalize() after the caller had treated startup as successful; the failure path published an error without attach reaping, container deletion, or durable mark_managed_failed, and set finished_ so stop() became a no-op while attach/container survived. Repairs retained beyond the contributor head, each bound to a demonstrated failure: - std::jthread + deterministic stop_token handles the partial-start case where sampler construction succeeds but finalizer launch fails (regression: tests/control/apple_container_unavailable_test and the start_sampler_then_finalizer seam used by production). - Restored hard-disabled Apple boundary: lifecycle_operational() false, receipt schema 0, disk enforcement unavailable, empty managed runtime advertisement, and public method denial before any side effect. The current PR #23 head crossed the reviewed activation boundary (schema 0 -> 1, filesystem_quota advertised, lifecycle constructed-state true) without live-validation. - glaze parsing hardened: strict_json_options now sets null_terminated=false; non-NUL-terminated string_views fed parse_apple_container_stats and duplicate_key_guard caused a heap-buffer-overflow read in glz::skip_ws (ASan crash input [{"id":"aanumProcesses" reproduced deterministically; seed corpus fuzz/corpus/apple_container_stats/truncated-object.json added). - Sage bundle projection admission hardening (Layer-12bba117) and its test coverage carried through the merge. Validation (umask 0022): - Dev CTest 76/76; ASan/UBSan 76/76; TSan 76/76. - libFuzzer 10,000 units each: library_bundle, session_plan, apple_container_stats (LLVM 22, ASan/UBSan), all fuzz_exit=0. - clang-format clean on changed TUs; git diff --check clean.
12 lines
389 B
C++
12 lines
389 B
C++
#include "apple_container_session_runtime.hpp"
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
#include <string_view>
|
|
|
|
extern "C" auto LLVMFuzzerTestOneInput(const std::uint8_t* data, std::size_t size) -> int {
|
|
static_cast<void>(glove::control::apple_detail::parse_apple_container_stats(
|
|
std::string_view{reinterpret_cast<const char*>(data), size}, "apple-unit"
|
|
));
|
|
return 0;
|
|
}
|