@@ -1373,4 +1373,33 @@ pub mod tests {
1373
1373
let result = jpeg_io. get_object_locations_from_stream ( & mut stream) ;
1374
1374
assert ! ( matches!( result, Err ( Error :: InvalidAsset ( _) ) ) ) ;
1375
1375
}
1376
+
1377
+ #[ test]
1378
+ fn test_crash_jpeg_segments ( ) {
1379
+ let data = [
1380
+ 0xff , 0xd8 , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x01 , 0x00 , 0x00 , 0x47 ,
1381
+ 0xd2 , 0x00 , 0x10 , 0xff , 0x60 , 0xff , 0xff , 0xeb , 0x00 , 0x27 , 0xc2 , 0xb8 , 0xff , 0xd8 ,
1382
+ 0xff , 0xff , 0x60 , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff ,
1383
+ 0xff , 0xff , 0x60 , 0xff , 0x4e , 0x4e , 0x4e , 0xff , 0x00 , 0x00 , 0x2b , 0xff , 0xff , 0xff ,
1384
+ 0xff , 0xff , 0xff , 0xff , 0xff , 0x3d , 0xff , 0xff , 0x00 , 0xff , 0x5c , 0xff , 0xff , 0xda ,
1385
+ 0x00 , 0x02 , 0x00 , 0x01 , 0x00 , 0xff , 0x0b , 0x50 , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff ,
1386
+ 0xff , 0x10 , 0x00 , 0x00 , 0x59 , 0x00 , 0x00 , 0x00 , 0x00 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 ,
1387
+ 0x00 , 0x00 , 0xdf , 0xdf , 0x52 , 0x49 , 0x46 , 0x46 , 0xff , 0xff , 0xff , 0xff , 0x3d , 0xff ,
1388
+ 0xff , 0x00 , 0xff , 0x5c , 0x4b , 0x4e , 0x60 , 0xff , 0xff , 0x00 , 0x00 , 0x2b , 0xff , 0xff ,
1389
+ 0x3d , 0xff , 0xff , 0x00 , 0xff , 0x5c , 0xff , 0xff , 0xda , 0x00 , 0x10 , 0x00 , 0x00 , 0x59 ,
1390
+ 0x00 , 0x00 , 0x00 , 0x00 , 0xfd , 0x00 , 0x00 , 0x00 , 0x07 , 0x60 , 0xff , 0xff , 0xff , 0xff ,
1391
+ 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x60 , 0xff , 0x4e , 0x4e , 0x4e ,
1392
+ 0xff , 0x00 , 0x00 , 0x2b , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0x3d , 0xff ,
1393
+ 0xff , 0x00 , 0xff , 0x5c , 0xff , 0xff , 0xda , 0x00 , 0x10 , 0x00 , 0x00 , 0x59 , 0x00 , 0x00 ,
1394
+ 0x00 , 0x00 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0xdf , 0xdf , 0x52 , 0x49 , 0x46 ,
1395
+ 0x46 , 0x25 , 0x00 , 0x00 , 0xdf , 0xdf , 0x52 , 0x49 , 0x46 , 0xad , 0x46 , 0x6f , 0x00 , 0x6f ,
1396
+ 0x00 ,
1397
+ ] ;
1398
+
1399
+ let mut stream = Cursor :: new ( & data) ;
1400
+
1401
+ let jpeg_io = JpegIO { } ;
1402
+
1403
+ let _ = jpeg_io. get_object_locations_from_stream ( & mut stream) ;
1404
+ }
1376
1405
}
0 commit comments