Proof Portal
Projects
jsonparser
ProbeLabs36 findings · 123 requirementsComponent
parser
123 requirements allocated to this component across category functional.
Requirements123
Impl0/123
Test116/123
Doc123/123
Coverage gaps0
Open findingsHigh5Medium2Low2Info17 resolved
Contracts
Interface contracts this component is a producer or consumer of.
No interface contracts
This component neither produces nor consumes a declared interface contract.
Responsibilities
the requirements this component owns, by intent — filter for coverage gapsFindings 10 open · 7 resolved
Open (10)
known issues, coverage gaps and checks that still need attention- HighParseBoolean uses prefix match instead of exact equality — "trueish"/"falsehood" accepted as booleansOpenKI-11
- HighdecodeSingleUnicodeEscape length guard too small — OOB read + panic on a truncated \uXX escapeOpenKI-5
- HighunescapeToUTF8Config length guard off-by-one — OOB panic reading in[1] on a lone trailing backslashOpenKI-6
- HighparseInt fast-path threshold off-by-one — 19-digit integers skip overflow check and wrap silentlyOpenKI-7
- HighdecodeUnicodeEscape lone-high-surrogate guard reads in[6]/in[7] with a too-small length check — OOB panicOpenKI-8
- MediumarrayEachConfig empty-array sentinel checks for '}' instead of ']' — a valid `[]` is rejected as malformedOpenKI-10
- Mediumh2I upper-hex bound off-by-one — byte 'G' decodes as hex 16, so `\uGxxx` is silently acceptedOpenKI-9
- LownextTokenConfig drops the tab from its whitespace set — parsing fails on tab-formatted JSONOpenKI-13
- LowunescapeToUTF8Config drops '/' from the accepted escapes — the valid JSON escape `\/` is rejected as malformedOpenKI-14
- InfoarrayEachConfig empty-input guard returns the wrong documented error type (MalformedJsonError vs MalformedObjectError)OpenKI-12
Resolved / historical (7)
fixed defects, accepted risks and closed known issues — kept for the record- HighSet with array-index path component under an object parent produces malformed JSON outputFixedKI-3
- HighEmpty-string key path component panics (hazard-sweep finding)FixedDEFECT-260726-QS2V
- MediumdecodeUnicodeEscape lone low surrogate `\uDC00` is substituted with U+FFFD instead of a bogus code pointFixedKI-15
- MediumSet on top-level array-index beyond length returns KeyPathNotFoundError instead of appendingFixedKI-4
- MediumSet on top-level array-index beyond length returns KeyPathNotFoundError (SYS-REQ-110 contract gap)FixedDEFECT-260727-T7P7
- LowDelete with no key path returns an empty, non-aliasing slice (root-delete contract)FixedKI-16
- LowParseInt("-") returns (0, nil) — silent false-success on sign-only inputFixedKI-2
Attached code & tests
traced files across this component’s requirements, deduplicated by pathCode(8 files)
- aliases.goaliases.go
- append.goappend.go
- config.goconfig.go
- escape.goescape.go
- fuzz.gofuzz.go
- parser.goparser.go
- reader_parser.goreader_parser.go
- wildcard.gowildcard.go
Tests(42 files)
- aliases_test.goaliases_test.go
- append_test.goappend_test.go
- array_each_err_test.goarray_each_err_test.go
- benchmark_delete_test.gobenchmark/benchmark_delete_test.go
- benchmark_large_payload_test.gobenchmark/benchmark_large_payload_test.go
- benchmark_medium_payload_test.gobenchmark/benchmark_medium_payload_test.go
- benchmark_set_test.gobenchmark/benchmark_set_test.go
- benchmark_small_payload_test.gobenchmark/benchmark_small_payload_test.go
- bytes_test.gobytes_test.go
- bytes_unsafe_test.gobytes_unsafe_test.go
- config_test.goconfig_test.go
- coverage_closure_test.gocoverage_closure_test.go
- dead_code_audit_oob_test.godead_code_audit_oob_test.go
- dead_code_audit_test.godead_code_audit_test.go
- deep_spec_test.godeep_spec_test.go
- empty_key_path_test.goempty_key_path_test.go
- encoding_json_fuzz_test.goencoding_json_fuzz_test.go
- encoding_json_regression_test.gobenchmark/encoding_json_regression_test.go
- escape_test.goescape_test.go
- fuzz_native_test.gofuzz_native_test.go
- issues_56_107_229_test.goissues_56_107_229_test.go
- json_fuzz_test.gojson_fuzz_test.go
- len_uint_test.golen_uint_test.go
- mcdc_code_supplement_test.gomcdc_code_supplement_test.go
- mcdc_spec_witnesses_test.gomcdc_spec_witnesses_test.go
- mcdc_supplement_test.gomcdc_supplement_test.go
- obligation_evidence_test.goobligation_evidence_test.go
- obligation_property_test.goobligation_property_test.go
- optimization_equiv_test.gooptimization_equiv_test.go
- parser_error_test.goparser_error_test.go
- parser_test.goparser_test.go
- path_compiler_test.gopath_compiler_test.go
- path_compiler.gopath_compiler.go
- path_fuzz_test.gopath_fuzz_test.go
- property_test.goproperty_test.go
- reader_parser_test.goreader_parser_test.go
- reference_oracle_test.goreference_oracle_test.go
- set_spec_test.goset_spec_test.go
- sys_req_110_111_witness_test.gosys_req_110_111_witness_test.go
- v131_regression_test.gov131_regression_test.go
- v150_mcdc_witness_test.gov150_mcdc_witness_test.go
- wildcard_test.gowildcard_test.go
How this component connects
Open in graphMapping this component’s neighbourhood…
Discussions
Discuss this with the proof team. Nothing changes in your audit automatically — you open a request and a staff member records any outcome inside the thread.
Sign in to discuss this with the proof team.Sign in