mirror of
https://github.com/elicpeter/nyx.git
synced 2026-06-15 20:05:13 +02:00
[pitboss] phase 11: Track J.9 + Track L.9 — CRYPTO, JSON_PARSE, UNAUTHORIZED_ID, DATA_EXFIL corpora
This commit is contained in:
parent
61a9e4e5df
commit
6784d73e25
85 changed files with 2508 additions and 30 deletions
|
|
@ -97,6 +97,15 @@ pub struct Attempt {
|
|||
#[derive(Debug)]
|
||||
pub enum RunError {
|
||||
NoPayloadsForCap,
|
||||
/// Phase 11 (Track J.9): the requested cap is in the structural
|
||||
/// "no sound oracle" set
|
||||
/// ([`crate::dynamic::corpus::registry::CORPUS_SOUND_ORACLE_UNAVAILABLE`]).
|
||||
/// Surfaces as
|
||||
/// [`crate::evidence::UnsupportedReason::SoundOracleUnavailable`]
|
||||
/// at the verify boundary so unsupported-budget accounting
|
||||
/// distinguishes "no oracle exists" from "no payloads carved
|
||||
/// yet".
|
||||
SoundOracleUnavailable { cap: crate::labels::Cap, lang: Lang, hint: String },
|
||||
Harness(HarnessError),
|
||||
Sandbox(SandboxError),
|
||||
BuildFailed { stderr: String, attempts: u32 },
|
||||
|
|
@ -131,6 +140,22 @@ pub fn run_spec(spec: &HarnessSpec, opts: &SandboxOptions) -> Result<RunOutcome,
|
|||
payloads_for(spec.expected_cap)
|
||||
};
|
||||
if payloads.is_empty() {
|
||||
// Phase 11 (Track J.9): route caps with no sound oracle to a
|
||||
// distinct error so the unsupported budget reflects
|
||||
// structural impossibility rather than a missing payload.
|
||||
if (spec.expected_cap.bits()
|
||||
& crate::dynamic::corpus::registry::CORPUS_SOUND_ORACLE_UNAVAILABLE)
|
||||
!= 0
|
||||
{
|
||||
return Err(RunError::SoundOracleUnavailable {
|
||||
cap: spec.expected_cap,
|
||||
lang: spec.lang,
|
||||
hint: crate::dynamic::corpus::registry::sound_oracle_unavailable_hint(
|
||||
spec.expected_cap,
|
||||
)
|
||||
.to_owned(),
|
||||
});
|
||||
}
|
||||
return Err(RunError::NoPayloadsForCap);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue