Skip to content

test: add cargo-fuzz eager parse harness#77

Merged
membphis merged 3 commits into
mainfrom
codex/issue-63-fuzz-harness
May 30, 2026
Merged

test: add cargo-fuzz eager parse harness#77
membphis merged 3 commits into
mainfrom
codex/issue-63-fuzz-harness

Conversation

@membphis
Copy link
Copy Markdown
Collaborator

Summary

  • scaffold cargo-fuzz infrastructure with the first fuzz_parse_eager target
  • compare qjson EAGER parse accept/reject behavior against serde_json::Value
  • seed the corpus from JSONTestSuite, cJSON fuzz inputs, and benchmark fixtures
  • add a nightly CI fuzz regression guard and local fuzzing guidance

The differential oracle documents the known value-model differences: serde's numeric range checks and escaped unpaired UTF-16 surrogate handling. Deep nesting is capped out of this target so the dedicated depth target can own that boundary.

Closes #63.

Testing

  • cargo test --release — 299 Rust tests passed
  • cargo +nightly fuzz run fuzz_parse_eager -- -max_total_time=60 — 3,786,280 runs, no crashes or mismatches
  • git diff --cached --check before commit

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 30, 2026

Important

Review skipped

Too many files!

This PR contains 300 files, which is 150 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d69cdcfe-0bcf-4ab1-a25b-59f3185e8421

📥 Commits

Reviewing files that changed from the base of the PR and between 2b8f07b and 16a8175.

📒 Files selected for processing (300)
  • .gitattributes
  • .github/workflows/ci.yml
  • CONTRIBUTING.md
  • fuzz/.gitignore
  • fuzz/Cargo.toml
  • fuzz/corpus/fuzz_parse_eager/cjson_test1
  • fuzz/corpus/fuzz_parse_eager/cjson_test10
  • fuzz/corpus/fuzz_parse_eager/cjson_test11
  • fuzz/corpus/fuzz_parse_eager/cjson_test2
  • fuzz/corpus/fuzz_parse_eager/cjson_test3
  • fuzz/corpus/fuzz_parse_eager/cjson_test3.bu
  • fuzz/corpus/fuzz_parse_eager/cjson_test3.uf
  • fuzz/corpus/fuzz_parse_eager/cjson_test3.uu
  • fuzz/corpus/fuzz_parse_eager/cjson_test4
  • fuzz/corpus/fuzz_parse_eager/cjson_test5
  • fuzz/corpus/fuzz_parse_eager/cjson_test6
  • fuzz/corpus/fuzz_parse_eager/cjson_test7
  • fuzz/corpus/fuzz_parse_eager/cjson_test8
  • fuzz/corpus/fuzz_parse_eager/cjson_test9
  • fuzz/corpus/fuzz_parse_eager/fixture_medium_resp.json
  • fuzz/corpus/fuzz_parse_eager/fixture_small_api.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_1_true_without_comma.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_a_invalid_utf8.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_colon_instead_of_comma.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_comma_after_close.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_comma_and_number.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_double_comma.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_double_extra_comma.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_extra_close.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_extra_comma.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_incomplete.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_incomplete_invalid_value.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_inner_array_no_comma.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_invalid_utf8.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_items_separated_by_semicolon.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_just_comma.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_just_minus.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_missing_value.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_newlines_unclosed.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_number_and_comma.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_number_and_several_commas.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_spaces_vertical_tab_formfeed.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_star_inside.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_unclosed.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_unclosed_trailing_comma.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_unclosed_with_new_lines.json
  • fuzz/corpus/fuzz_parse_eager/json_n_array_unclosed_with_object_inside.json
  • fuzz/corpus/fuzz_parse_eager/json_n_incomplete_false.json
  • fuzz/corpus/fuzz_parse_eager/json_n_incomplete_null.json
  • fuzz/corpus/fuzz_parse_eager/json_n_incomplete_true.json
  • fuzz/corpus/fuzz_parse_eager/json_n_multidigit_number_then_00.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_++.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_+1.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_+Inf.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_-01.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_-1.0..json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_-2..json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_-NaN.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_.-1.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_.2e-3.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_0.1.2.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_0.3e+.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_0.3e.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_0.e1.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_0_capital_E+.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_0_capital_E.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_0e+.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_0e.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_1.0e+.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_1.0e-.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_1.0e.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_1_000.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_1eE2.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_2.e+3.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_2.e-3.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_2.e3.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_9.e+.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_Inf.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_NaN.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_U+FF11_fullwidth_digit_one.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_expression.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_hex_1_digit.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_hex_2_digits.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_infinity.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_invalid+-.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_invalid-negative-real.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_invalid-utf-8-in-bigger-int.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_invalid-utf-8-in-exponent.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_invalid-utf-8-in-int.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_minus_infinity.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_minus_sign_with_trailing_garbage.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_minus_space_1.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_neg_int_starting_with_zero.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_neg_real_without_int_part.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_neg_with_garbage_at_end.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_real_garbage_after_e.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_real_with_invalid_utf8_after_e.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_real_without_fractional_part.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_starting_with_dot.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_with_alpha.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_with_alpha_char.json
  • fuzz/corpus/fuzz_parse_eager/json_n_number_with_leading_zero.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_bad_value.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_bracket_key.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_comma_instead_of_colon.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_double_colon.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_emoji.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_garbage_at_end.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_key_with_single_quotes.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_lone_continuation_byte_in_key_and_trailing_comma.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_missing_colon.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_missing_key.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_missing_semicolon.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_missing_value.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_no-colon.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_non_string_key.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_non_string_key_but_huge_number_instead.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_repeated_null_null.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_several_trailing_commas.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_single_quote.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_trailing_comma.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_trailing_comment.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_trailing_comment_open.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_trailing_comment_slash_open.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_trailing_comment_slash_open_incomplete.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_two_commas_in_a_row.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_unquoted_key.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_unterminated-value.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_with_single_string.json
  • fuzz/corpus/fuzz_parse_eager/json_n_object_with_trailing_garbage.json
  • fuzz/corpus/fuzz_parse_eager/json_n_single_space.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_1_surrogate_then_escape.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_1_surrogate_then_escape_u.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_1_surrogate_then_escape_u1.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_1_surrogate_then_escape_u1x.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_accentuated_char_no_quotes.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_backslash_00.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_escape_x.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_escaped_backslash_bad.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_escaped_ctrl_char_tab.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_escaped_emoji.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_incomplete_escape.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_incomplete_escaped_character.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_incomplete_surrogate.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_incomplete_surrogate_escape_invalid.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_invalid-utf-8-in-escape.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_invalid_backslash_esc.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_invalid_unicode_escape.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_invalid_utf8_after_escape.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_leading_uescaped_thinspace.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_no_quotes_with_bad_escape.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_single_doublequote.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_single_quote.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_single_string_no_double_quotes.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_start_escape_unclosed.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_unescaped_ctrl_char.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_unescaped_newline.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_unescaped_tab.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_unicode_CapitalU.json
  • fuzz/corpus/fuzz_parse_eager/json_n_string_with_trailing_garbage.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_U+2060_word_joined.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_UTF8_BOM_no_data.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_angle_bracket_..json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_angle_bracket_null.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_array_trailing_garbage.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_array_with_extra_array_close.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_array_with_unclosed_string.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_ascii-unicode-identifier.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_capitalized_True.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_close_unopened_array.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_comma_instead_of_closing_brace.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_double_array.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_end_array.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_incomplete_UTF8_BOM.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_lone-invalid-utf-8.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_lone-open-bracket.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_no_data.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_null-byte-outside-string.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_number_with_trailing_garbage.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_object_followed_by_closing_object.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_object_unclosed_no_value.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_object_with_comment.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_object_with_trailing_garbage.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_open_array_apostrophe.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_open_array_comma.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_open_array_open_object.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_open_array_open_string.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_open_array_string.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_open_object.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_open_object_close_array.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_open_object_comma.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_open_object_open_array.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_open_object_open_string.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_open_object_string_with_apostrophes.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_open_open.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_single_eacute.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_single_star.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_trailing_#.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_uescaped_LF_before_string.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_unclosed_array.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_unclosed_array_partial_null.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_unclosed_array_unfinished_false.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_unclosed_array_unfinished_true.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_unclosed_object.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_unicode-identifier.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_whitespace_U+2060_word_joiner.json
  • fuzz/corpus/fuzz_parse_eager/json_n_structure_whitespace_formfeed.json
  • fuzz/corpus/fuzz_parse_eager/json_y_array_arraysWithSpaces.json
  • fuzz/corpus/fuzz_parse_eager/json_y_array_empty-string.json
  • fuzz/corpus/fuzz_parse_eager/json_y_array_empty.json
  • fuzz/corpus/fuzz_parse_eager/json_y_array_ending_with_newline.json
  • fuzz/corpus/fuzz_parse_eager/json_y_array_false.json
  • fuzz/corpus/fuzz_parse_eager/json_y_array_heterogeneous.json
  • fuzz/corpus/fuzz_parse_eager/json_y_array_null.json
  • fuzz/corpus/fuzz_parse_eager/json_y_array_with_1_and_newline.json
  • fuzz/corpus/fuzz_parse_eager/json_y_array_with_leading_space.json
  • fuzz/corpus/fuzz_parse_eager/json_y_array_with_several_null.json
  • fuzz/corpus/fuzz_parse_eager/json_y_array_with_trailing_space.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_0e+1.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_0e1.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_after_space.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_double_close_to_zero.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_int_with_exp.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_minus_zero.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_negative_int.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_negative_one.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_negative_zero.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_real_capital_e.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_real_capital_e_neg_exp.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_real_capital_e_pos_exp.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_real_exponent.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_real_fraction_exponent.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_real_neg_exp.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_real_pos_exponent.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_simple_int.json
  • fuzz/corpus/fuzz_parse_eager/json_y_number_simple_real.json
  • fuzz/corpus/fuzz_parse_eager/json_y_object.json
  • fuzz/corpus/fuzz_parse_eager/json_y_object_basic.json
  • fuzz/corpus/fuzz_parse_eager/json_y_object_duplicated_key.json
  • fuzz/corpus/fuzz_parse_eager/json_y_object_duplicated_key_and_value.json
  • fuzz/corpus/fuzz_parse_eager/json_y_object_empty.json
  • fuzz/corpus/fuzz_parse_eager/json_y_object_empty_key.json
  • fuzz/corpus/fuzz_parse_eager/json_y_object_escaped_null_in_key.json
  • fuzz/corpus/fuzz_parse_eager/json_y_object_extreme_numbers.json
  • fuzz/corpus/fuzz_parse_eager/json_y_object_long_strings.json
  • fuzz/corpus/fuzz_parse_eager/json_y_object_simple.json
  • fuzz/corpus/fuzz_parse_eager/json_y_object_string_unicode.json
  • fuzz/corpus/fuzz_parse_eager/json_y_object_with_newlines.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_1_2_3_bytes_UTF-8_sequences.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_accepted_surrogate_pair.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_accepted_surrogate_pairs.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_allowed_escapes.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_backslash_and_u_escaped_zero.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_backslash_doublequotes.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_comments.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_double_escape_a.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_double_escape_n.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_escaped_control_character.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_escaped_noncharacter.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_in_array.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_in_array_with_leading_space.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_last_surrogates_1_and_2.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_nbsp_uescaped.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_nonCharacterInUTF-8_U+10FFFF.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_nonCharacterInUTF-8_U+FFFF.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_null_escape.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_one-byte-utf-8.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_pi.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_reservedCharacterInUTF-8_U+1BFFF.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_simple_ascii.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_space.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_three-byte-utf-8.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_two-byte-utf-8.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_u+2028_line_sep.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_u+2029_par_sep.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_uEscape.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_uescaped_newline.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_unescaped_char_delete.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_unicode.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_unicodeEscapedBackslash.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_unicode_2.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_unicode_U+10FFFE_nonchar.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_unicode_U+1FFFE_nonchar.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_unicode_U+2064_invisible_plus.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_unicode_U+FDD0_nonchar.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_unicode_U+FFFE_nonchar.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_unicode_escaped_double_quote.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_utf8.json
  • fuzz/corpus/fuzz_parse_eager/json_y_string_with_del_character.json
  • fuzz/corpus/fuzz_parse_eager/json_y_structure_lonely_false.json
  • fuzz/corpus/fuzz_parse_eager/json_y_structure_lonely_int.json
  • fuzz/corpus/fuzz_parse_eager/json_y_structure_lonely_negative_real.json
  • fuzz/corpus/fuzz_parse_eager/json_y_structure_lonely_null.json
  • fuzz/corpus/fuzz_parse_eager/json_y_structure_lonely_string.json
  • fuzz/corpus/fuzz_parse_eager/json_y_structure_lonely_true.json
  • fuzz/corpus/fuzz_parse_eager/json_y_structure_string_empty.json
  • fuzz/corpus/fuzz_parse_eager/json_y_structure_trailing_newline.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/issue-63-fuzz-harness

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@membphis membphis merged commit 5c4c3c6 into main May 30, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

test: fuzz harness (cargo-fuzz / libFuzzer)

1 participant