open-standards/wai/http-conformance/falsify/recovery-record-unchecked.patch
Transaction Science ac602599d0 http receipts round 3: falsify the fixes
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]>
2026-10-08 04:15:46 -04:00

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