Skip to content

[pull] master from stleary:master#47

Open
pull[bot] wants to merge 530 commits intoamericanstone:masterfrom
stleary:master
Open

[pull] master from stleary:master#47
pull[bot] wants to merge 530 commits intoamericanstone:masterfrom
stleary:master

Conversation

@pull
Copy link

@pull pull bot commented Feb 6, 2022

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull bot added the ⤵️ pull label Feb 6, 2022
Simulant87 and others added 29 commits March 10, 2024 23:21
test(#871-strictMode): initial test implementation
…nce-StringBuilderWriter

Improve toString Performance: Use StringBuilderWriter for toString methods
Simulant87 and others added 30 commits November 14, 2025 15:40
Update README.md tested on java 25
Update github build actions, add LTS JDK 25 build
pre-release-20251224 Prep for next release
…sues

Refactoring: Fix sonarqube reliability issues
Add type checking before casting parse() results to JSONArray/JSONObject.
When parse() returns an unexpected type (e.g., String for malformed input),
the code now throws a descriptive JSONException instead of ClassCastException.

This prevents unchecked exceptions from propagating to callers who only
expect JSONException from these methods.

Fixes #1034
Fix StringIndexOutOfBoundsException and NumberFormatException in
XMLTokener.unescapeEntity() when parsing malformed XML numeric
character references.

Issues:
- &#; (empty numeric reference) caused StringIndexOutOfBoundsException
- &#txx; (invalid decimal) caused NumberFormatException
- &#xGGG; (invalid hex) caused NumberFormatException

Changes:
- Add length validation before accessing character positions
- Add isValidHex() and isValidDecimal() helper methods
- Throw proper JSONException with descriptive messages

Fixes #1035, Fixes #1036
Extracted hex and decimal parsing logic into separate methods to
address SonarQube complexity warning:
- parseHexEntity(): handles ઼ format
- parseDecimalEntity(): handles { format

This reduces cyclomatic complexity while maintaining identical
functionality and all validation checks.
Added comprehensive test coverage for numeric character reference parsing:

Exception cases (should throw JSONException):
- Empty numeric entity: &#;
- Invalid decimal entity: &#txx;
- Empty hex entity: &#x;
- Invalid hex characters: &#xGGG;

Valid cases (should parse correctly):
- Decimal entity: A -> 'A'
- Lowercase hex entity: A -> 'A'
- Uppercase hex entity: A -> 'A'

These tests verify the fixes for issues #1035 and #1036.
Added comprehensive test coverage for safe type casting:

Exception cases (should throw JSONException, not ClassCastException):
- Malformed XML causing type mismatch in toJSONArray()
- Type mismatch in toJSONObject()

Valid cases (should continue to work):
- Valid XML to JSONArray conversion
- Valid XML to JSONObject conversion

These tests verify the fix for issue #1034 where ClassCastException
was thrown when parse() returned unexpected types.
Fix ClassCastException in JSONML.toJSONArray and toJSONObject
Fix input validation in XMLTokener.unescapeEntity()
Fixes the issue of losing the array if an empty forceList element or a tag is in the middle or the end
Added license clarification
Enhance README with license clarification
Ignore static fields in JSONObject.fromJson()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.