Skip to content

Commit 63fc4df

Browse files
committed
Fix possible carsh for large negative integeR
1 parent 7772a23 commit 63fc4df

File tree

9 files changed

+33
-2
lines changed

9 files changed

+33
-2
lines changed

data/crash/crash000030.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"Neh":-333333333333333333333333333333.3}

data/crash/crash000031.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[ -9265394459000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0p003]

data/crash/crash000032.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[348253421170671280348253421170679.6171,-]

data/crash/crash000033.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[3,28033333333333333333333333333333333348253421170679.6170-]

data/crash/crash000034.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[3,2825342119.61701e-0,1,
2+
128253421170679.61701e-0,1,
3+
128253421170679.61701e-0,1,
4+
0.1e1,-1e-1,-128253421170679.61701e3,28253421170679.61701e-0,1,
5+
48253421170679.61701e-0,1,
6+
1266666666661,-128253421170679.61701e3,28253421170679.61701e-0,1,
7+
48253421170679.61701e-0,1,
8+
12666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666661170679.61701e3,28253421170679.61701e-0,1,
9+
48253421170679.61701e-0,16666666666666666666666666666666666666666666666666666666666666666666666679.6111-]

data/crash/crash000035.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
-9223372036854775808

data/crash/crash000036.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
[
2+
1066,
3+
1e1,
4+
0.1e1,
5+
1e-1,-1e-0, -88888888888888888888888888888888.1,"rod"]

src/numberparse.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,10 +319,11 @@ impl<'de> Deserializer<'de> {
319319
}
320320

321321
if negative {
322-
if i > 0x8000_0000_0000_0000 {
322+
if i >= 9_223_372_036_854_775_808 {
323+
//i64::min_value() * -1
323324
return Err(self.error(ErrorType::Overflow));
324325
}
325-
} else if i >= 0x8000_0000_0000_0000 {
326+
} else if i > i64::max_value() as u64 {
326327
return Err(self.error(ErrorType::Overflow));
327328
}
328329

tests/jsonchecker.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,3 +181,14 @@ crash!(crash000026);
181181
crash!(crash000027);
182182
crash!(crash000028);
183183
crash!(crash000029);
184+
185+
crash!(crash000030);
186+
crash!(crash000031);
187+
crash!(crash000032);
188+
crash!(crash000033);
189+
crash!(crash000034);
190+
crash!(crash000035);
191+
crash!(crash000036);
192+
// crash!(crash000037);
193+
// crash!(crash000038);
194+
// crash!(crash000039);

0 commit comments

Comments
 (0)