Eighteen patches, each breaking one function of the playlist side and naming the cases that must fail: adjacency (another program date-time, a larger discontinuity sequence), rendering (parts after EXTINF, layer lines after the URI), bandwidth rounding, duration rounding, a delta update read, the session-data line before #EXTM3U, the render digest left out of the signed payload, a receipt under another name, an unchecked parent, the open segment's parts not read for cids, the integer log without interpolation, a waiting utility rule, a look-ahead blind to stalls, an unlabelled figure taken as zero, per-layer bytes as a depth's, and size-blind entry order. falsify/run.sh builds with http and video_manifest and runs the eleven new Python mutations. A depth case at 150 kb/s sits between layer boundaries. Co-Authored-By: Claude Opus 5.5 <[email protected]>
14 lines
792 B
Diff
14 lines
792 B
Diff
# must fail: playlist_parse_skip
|
|
# a delta update read as a whole playlist (hls::parse_media_playlist)
|
|
diff --git a/wai/wai-rs/src/http_binding/hls.rs b/wai/wai-rs/src/http_binding/hls.rs
|
|
index 2623644b..87e34cce 100644
|
|
--- a/wai/wai-rs/src/http_binding/hls.rs
|
|
+++ b/wai/wai-rs/src/http_binding/hls.rs
|
|
@@ -322,7 +322,6 @@ pub fn parse_media_playlist(text: &str) -> Result<MediaPlaylist, PlaylistError>
|
|
}
|
|
}
|
|
"#EXT-X-ENDLIST" => p.end_list = true,
|
|
- "#EXT-X-SKIP" => return Err(malformed("a delta update (EXT-X-SKIP) is not compared")),
|
|
"#EXT-X-STREAM-INF" | "#EXT-X-I-FRAME-STREAM-INF" | "#EXT-X-MEDIA" => {
|
|
return Err(malformed(format!("{tag}: a multivariant playlist, not a media playlist")))
|
|
}
|