Skip to content

Commit 158fff7

Browse files
committed
Merge branch '2.19'
2 parents d3b045f + c3a1216 commit 158fff7

File tree

6 files changed

+86
-6
lines changed

6 files changed

+86
-6
lines changed

.github/workflows/cifuzz.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
dry-run: false
2828
language: jvm
2929
- name: Upload Crash
30-
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
30+
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
3131
if: failure() && steps.build.outcome == 'success'
3232
with:
3333
name: artifacts

.github/workflows/main.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
steps:
3939
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
4040
- name: Set up JDK
41-
uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
41+
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
4242
with:
4343
distribution: 'temurin'
4444
java-version: ${{ matrix.java_version }}
@@ -71,7 +71,7 @@ jobs:
7171
run: ./mvnw -B -q -ff -ntp test
7272
- name: Publish code coverage
7373
if: ${{ matrix.release_build && github.event_name != 'pull_request' }}
74-
uses: codecov/codecov-action@1e68e06f1dbfde0e4cefc87efeba9e4643565303 # v5.1.2
74+
uses: codecov/codecov-action@13ce06bfc6bbe3ecf90edbbf1bc32fe5978ca1d3 # v5.3.1
7575
with:
7676
token: ${{ secrets.CODECOV_TOKEN }}
7777
files: ./target/site/jacoco/jacoco.xml

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
[[ "$TAG" =~ jackson-core-[0-9]+\.[0-9]+\.[0-9]+(-rc[0-9]+)? ]] || exit 1
3131
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
3232
- name: Set up JDK
33-
uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
33+
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
3434
with:
3535
distribution: "temurin"
3636
java-version: "8"

.github/workflows/scorecard.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,14 @@ jobs:
5252
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
5353
# format to the repository Actions tab.
5454
- name: "Upload artifact"
55-
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
55+
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
5656
with:
5757
name: SARIF file
5858
path: results.sarif
5959
retention-days: 5
6060

6161
# Upload the results to GitHub's code scanning dashboard.
6262
- name: "Upload to code-scanning"
63-
uses: github/codeql-action/upload-sarif@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0
63+
uses: github/codeql-action/upload-sarif@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8
6464
with:
6565
sarif_file: results.sarif

release-notes/VERSION-2.x

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ a pure JSON library.
3030
#1391: Fix issue where the parser can read back old number state when
3131
parsing later numbers
3232
(fix contributed by @pjfanning)
33+
#1397: Jackson changes additional values to infinite in case of special
34+
JSON structures and existing infinite values
35+
(reported by @Rodenstock)
36+
(fix contributed by @pjfanning)
3337

3438
2.18.2 (27-Nov-2024)
3539

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package tools.jackson.core.unittest.read;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import tools.jackson.core.*;
6+
import tools.jackson.core.unittest.*;
7+
8+
import static org.junit.jupiter.api.Assertions.assertEquals;
9+
10+
class NumberParsing1397Test extends JacksonCoreTestBase
11+
{
12+
private TokenStreamFactory JSON_F = newStreamFactory();
13+
14+
final String radiusValue = "179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
15+
final String INPUT_JSON = a2q("{ 'results': [ { " +
16+
"'radius': " + radiusValue + ", " +
17+
"'type': 'center', " +
18+
"'center': { " +
19+
"'x': -11.0, " +
20+
"'y': -2.0 } } ] }");
21+
22+
// [jackson-core#1397]
23+
@Test
24+
public void issue1397() throws Exception
25+
{
26+
for (int mode : ALL_MODES) {
27+
testIssue(JSON_F, mode, INPUT_JSON, true);
28+
testIssue(JSON_F, mode, INPUT_JSON, false);
29+
}
30+
}
31+
32+
private void testIssue(final TokenStreamFactory jsonF,
33+
final int mode,
34+
final String json,
35+
final boolean checkFirstNumValues) throws Exception
36+
{
37+
// checkFirstNumValues=false reproduces the issue in https://github.com/FasterXML/jackson-core/issues/1397
38+
try (JsonParser p = createParser(jsonF, mode, json)) {
39+
assertToken(JsonToken.START_OBJECT, p.nextToken());
40+
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
41+
assertEquals("results", p.currentName());
42+
assertToken(JsonToken.START_ARRAY, p.nextToken());
43+
assertToken(JsonToken.START_OBJECT, p.nextToken());
44+
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
45+
assertEquals("radius", p.currentName());
46+
assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken());
47+
assertEquals(JsonParser.NumberType.BIG_INTEGER, p.getNumberType());
48+
assertEquals(radiusValue, p.getNumberValueDeferred());
49+
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
50+
assertEquals("type", p.currentName());
51+
assertToken(JsonToken.VALUE_STRING, p.nextToken());
52+
assertEquals("center", p.getString());
53+
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
54+
assertEquals("center", p.currentName());
55+
assertToken(JsonToken.START_OBJECT, p.nextToken());
56+
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
57+
assertEquals("x", p.currentName());
58+
assertToken(JsonToken.VALUE_NUMBER_FLOAT, p.nextToken());
59+
if (checkFirstNumValues) {
60+
assertEquals(JsonParser.NumberType.DOUBLE, p.getNumberType());
61+
assertEquals(Double.valueOf(-11.0d), p.getNumberValueDeferred());
62+
}
63+
assertEquals(Double.valueOf(-11.0d), p.getDoubleValue());
64+
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
65+
assertEquals("y", p.currentName());
66+
assertToken(JsonToken.VALUE_NUMBER_FLOAT, p.nextToken());
67+
assertEquals(JsonParser.NumberType.DOUBLE, p.getNumberType());
68+
assertEquals(Double.valueOf(-2.0d), p.getNumberValueDeferred());
69+
assertEquals(Double.valueOf(-2.0d), p.getDoubleValue());
70+
assertToken(JsonToken.END_OBJECT, p.nextToken());
71+
assertToken(JsonToken.END_OBJECT, p.nextToken());
72+
assertToken(JsonToken.END_ARRAY, p.nextToken());
73+
assertToken(JsonToken.END_OBJECT, p.nextToken());
74+
}
75+
}
76+
}

0 commit comments

Comments
 (0)