authorgravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2021-10-02 03:38:03-07:00
committergravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2021-10-02 03:38:03-07:00
log36f1f4f9fe39492367445b60153d7217533fb379
treed76bc6e221e4077558abc4fb9a6e9a4339b65784
parent933fd5110d787b8ffd757eac496f59afbf357f07

deflate: Update fuzzed test cases and add InvalidTree test cases


1 files changed, 15 insertions(+), 1 deletions(-)

lib/std/compress/deflate.zig+15-1
......@@ -702,8 +702,22 @@ test "empty distance alphabet" {
702702
703703test "inflateStream fuzzing" {
704704 // see https://github.com/ziglang/zig/issues/9842
705 try std.testing.expectError(error.EndOfStream, testInflate("\x950000"));
705 try std.testing.expectError(error.EndOfStream, testInflate("\x95\x90=o\xc20\x10\x86\xf30"));
706706 try std.testing.expectError(error.OutOfCodes, testInflate("\x950\x00\x0000000"));
707
708 // Huffman.construct errors
709 // lencode
710 try std.testing.expectError(error.InvalidTree, testInflate("\x950000"));
711 try std.testing.expectError(error.InvalidTree, testInflate("\x05000"));
712 // hlen
713 try std.testing.expectError(error.InvalidTree, testInflate("\x05\xea\x01\t\x00\x00\x00\x01\x00\\\xbf.\t\x00"));
714 // hdist
715 try std.testing.expectError(error.InvalidTree, testInflate("\x05\xe0\x01A\x00\x00\x00\x00\x10\\\xbf."));
716
717 // Huffman.construct -> error.IncompleteSet returns that shouldn't give error.InvalidTree
718 // (like the "empty distance alphabet" test but for ndist instead of nlen)
719 try std.testing.expectError(error.EndOfStream, testInflate("\x05\xe0\x01\t\x00\x00\x00\x00\x10\\\xbf\xce"));
720 try testInflate("\x15\xe0\x01\t\x00\x00\x00\x00\x10\\\xbf.0");
707721}
708722
709723fn testInflate(data: []const u8) !void {