open-standards/wai/http-conformance/falsify/bola-narrow-product.patch
2026-10-06 10:39:19 -04:00

15 lines
940 B
Diff

# must fail: abr_extreme_bola_like_past_128_bits
# the utility-over-buffer cross-multiplication in 128 bits, wrapping (abr::BolaLike::choose)
diff --git a/wai/wai-rs/src/http_binding/abr.rs b/wai/wai-rs/src/http_binding/abr.rs
index 6fb8973c..0f72e915 100644
--- a/wai/wai-rs/src/http_binding/abr.rs
+++ b/wai/wai-rs/src/http_binding/abr.rs
@@ -302,7 +302,7 @@ impl Policy for BolaLike {
for i in (0..k).filter(|&i| score[i] > 0) {
// score[i]/size(i) > score[b]/size(b), by cross-multiplication widened
// past 128 bits: a score times a size reaches 2^141.
- if best.is_none_or(|b| product_greater(score[i] as u128, size(b), score[b] as u128, size(i))) {
+ if best.is_none_or(|b| (score[i] as u128).wrapping_mul(u128::from(size(b))) > (score[b] as u128).wrapping_mul(u128::from(size(i)))) {
best = Some(i);
}
}