Patches (falsify/run.sh), each failing the corpus cases it names: bytes-unchecked, decision-unchecked, recovery-record-unchecked, operating-point-unchecked, session-accepted, declaration-unnamed, first-publisher, matchers-need-object and set-sha-faults; claim-through-any-receipt, fetch-unmemoised, fetch-budget-unchecked and file-cap-unchecked regenerated against the new receipts.rs. Co-Authored-By: Claude Opus 5.5 <[email protected]>
17 lines
946 B
Diff
17 lines
946 B
Diff
# must fail: receipts_binding_recovery receipts_binding_recovery_object_not_held receipts_binding_recovery_no_matcher
|
|
# a binding-recovery record accepted without its declaration, publisher or match (receipts::step6)
|
|
diff --git a/wai/wai-rs/src/http_binding/receipts.rs b/wai/wai-rs/src/http_binding/receipts.rs
|
|
index 83cd7ccb..7cebbbd5 100644
|
|
--- a/wai/wai-rs/src/http_binding/receipts.rs
|
|
+++ b/wai/wai-rs/src/http_binding/receipts.rs
|
|
@@ -660,8 +660,8 @@ fn step6(
|
|
// §2.6.3: against its declaration together with the publisher key of a verified
|
|
// delivery receipt for the declaration's subject.
|
|
ClaimBody::BindingRecovery(r) => {
|
|
- if passed.is_empty() {
|
|
- return Err(ReceiptRefusal::ContextNotHeld);
|
|
+ if passed.len() < usize::MAX {
|
|
+ return Ok(());
|
|
}
|
|
let d = declaration_of(&r.declaration, fetch)?;
|
|
let publisher = passed
|