Skip to content

Commit c2d661c

Browse files
committed
Merge branch 'PHP-7.4'
* PHP-7.4: Fixed bug #78442 ('Illegal component' on exif_read_data since PHP7)
2 parents a09da43 + 89227fb commit c2d661c

File tree

5 files changed

+71
-40
lines changed

5 files changed

+71
-40
lines changed

ext/exif/exif.c

Lines changed: 27 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -951,28 +951,24 @@ static tag_info_array tag_table_VND_PANASONIC = {
951951
{ 0x0001, "Quality"},
952952
{ 0x0002, "FirmwareVersion"},
953953
{ 0x0003, "WhiteBalance"},
954-
{ 0x0004, "0x0004"},
955954
{ 0x0007, "FocusMode"},
956955
{ 0x000f, "AFMode"},
957956
{ 0x001a, "ImageStabilization"},
958957
{ 0x001c, "Macro"},
959958
{ 0x001f, "ShootingMode"},
960959
{ 0x0020, "Audio"},
961960
{ 0x0021, "DataDump"},
962-
{ 0x0022, "0x0022"},
963961
{ 0x0023, "WhiteBalanceBias"},
964962
{ 0x0024, "FlashBias"},
965963
{ 0x0025, "InternalSerialNumber"},
966964
{ 0x0026, "ExifVersion"},
967-
{ 0x0027, "0x0027"},
968965
{ 0x0028, "ColorEffect"},
969966
{ 0x0029, "TimeSincePowerOn"},
970967
{ 0x002a, "BurstMode"},
971968
{ 0x002b, "SequenceNumber"},
972969
{ 0x002c, "Contrast"},
973970
{ 0x002d, "NoiseReduction"},
974971
{ 0x002e, "SelfTimer"},
975-
{ 0x002f, "0x002f"},
976972
{ 0x0030, "Rotation"},
977973
{ 0x0031, "AFAssistLamp"},
978974
{ 0x0032, "ColorMode"},
@@ -1039,7 +1035,6 @@ static tag_info_array tag_table_VND_PANASONIC = {
10391035
{ 0x00a3, "ClearRetouchValue"},
10401036
{ 0x00ab, "TouchAE"},
10411037
{ 0x0e00, "PrintIM"},
1042-
{ 0x4449, "0x4449"},
10431038
{ 0x8000, "MakerNoteVersion"},
10441039
{ 0x8001, "SceneMode"},
10451040
{ 0x8004, "WBRedLevel"},
@@ -1074,22 +1069,20 @@ static tag_info_array tag_table_VND_SONY = {
10741069
{ 0x0112, "WhiteBalanceFineTune"},
10751070
{ 0x0114, "CameraSettings"},
10761071
{ 0x0115, "WhiteBalance"},
1077-
{ 0x0116, "0x0116"},
1072+
{ 0x0116, "ExtraInfo"},
10781073
{ 0x0e00, "PrintIM"},
10791074
{ 0x1000, "MultiBurstMode"},
10801075
{ 0x1001, "MultiBurstImageWidth"},
10811076
{ 0x1002, "MultiBurstImageHeight"},
10821077
{ 0x1003, "Panorama"},
1083-
{ 0x2000, "0x2000"},
10841078
{ 0x2001, "PreviewImage"},
1085-
{ 0x2002, "0x2002"},
1086-
{ 0x2003, "0x2003"},
1079+
{ 0x2002, "Rating"},
10871080
{ 0x2004, "Contrast"},
10881081
{ 0x2005, "Saturation"},
1089-
{ 0x2006, "0x2006"},
1090-
{ 0x2007, "0x2007"},
1091-
{ 0x2008, "0x2008"},
1092-
{ 0x2009, "0x2009"},
1082+
{ 0x2006, "Sharpness"},
1083+
{ 0x2007, "Brightness"},
1084+
{ 0x2008, "LongExposureNoiseReduction"},
1085+
{ 0x2009, "HighISONoiseReduction"},
10931086
{ 0x200a, "AutoHDR"},
10941087
{ 0x3000, "ShotInfo"},
10951088
{ 0xb000, "FileFormat"},
@@ -1116,8 +1109,9 @@ static tag_info_array tag_table_VND_SONY = {
11161109
{ 0xb049, "ReleaseMode"},
11171110
{ 0xb04a, "SequenceNumber"},
11181111
{ 0xb04b, "AntiBlur"},
1119-
{ 0xb04e, "LongExposureNoiseReduction"},
1112+
{ 0xb04e, "FocusMode"},
11201113
{ 0xb04f, "DynamicRangeOptimizer"},
1114+
{ 0xb050, "HighISONoiseReduction2"},
11211115
{ 0xb052, "IntelligentAuto"},
11221116
{ 0xb054, "WhiteBalance2"},
11231117
TAG_TABLE_END
@@ -1222,7 +1216,6 @@ static tag_info_array tag_table_VND_MINOLTA = {
12221216
{ 0x0100, "SceneMode"},
12231217
{ 0x0101, "ColorMode"},
12241218
{ 0x0102, "Quality"},
1225-
{ 0x0103, "0x0103"},
12261219
{ 0x0104, "FlashExposureComp"},
12271220
{ 0x0105, "Teleconverter"},
12281221
{ 0x0107, "ImageStabilization"},
@@ -1307,23 +1300,24 @@ typedef struct {
13071300

13081301
/* Remember to update PHP_MINFO if updated */
13091302
static const maker_note_type maker_note_array[] = {
1310-
{ tag_table_VND_CANON, "Canon", NULL, 0, 0, MN_ORDER_INTEL, MN_OFFSET_NORMAL},
1311-
{ tag_table_VND_CASIO, "CASIO", NULL, 0, 0, MN_ORDER_MOTOROLA, MN_OFFSET_NORMAL},
1312-
{ tag_table_VND_FUJI, "FUJIFILM", "FUJIFILM\x0C\x00\x00\x00", 12, 12, MN_ORDER_INTEL, MN_OFFSET_MAKER},
1313-
{ tag_table_VND_NIKON, "NIKON", "Nikon\x00\x01\x00", 8, 8, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1314-
{ tag_table_VND_NIKON_990, "NIKON", NULL, 0, 0, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1315-
{ tag_table_VND_OLYMPUS, "OLYMPUS OPTICAL CO.,LTD", "OLYMP\x00\x01\x00", 8, 8, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1316-
{ tag_table_VND_SAMSUNG, "SAMSUNG", NULL, 0, 0, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1317-
{ tag_table_VND_PANASONIC, "Panasonic", "Panasonic\x00\x00\x00", 12, 12, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1318-
{ tag_table_VND_DJI, "DJI", NULL, 0, 0, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1319-
{ tag_table_VND_SONY, "SONY", "SONY DSC \x00\x00\x00", 12, 12, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1320-
{ tag_table_VND_PENTAX, "PENTAX", "AOC\x00", 6, 6, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1321-
{ tag_table_VND_MINOLTA, "Minolta, KONICA MINOLTA", NULL, 0, 0, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1322-
{ tag_table_VND_SIGMA, "SIGMA, FOVEON", "SIGMA\x00\x00\x00", 10, 10, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1323-
{ tag_table_VND_SIGMA, "SIGMA, FOVEON", "FOVEON\x00\x00\x00", 10, 10, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1324-
{ tag_table_VND_KYOCERA, "KYOCERA, CONTAX", "KYOCERA \x00\x00\x00", 22, 22, MN_ORDER_NORMAL, MN_OFFSET_MAKER},
1325-
{ tag_table_VND_RICOH, "RICOH", "Ricoh", 5, 5, MN_ORDER_MOTOROLA, MN_OFFSET_NORMAL},
1326-
{ tag_table_VND_RICOH, "RICOH", "RICOH", 5, 5, MN_ORDER_MOTOROLA, MN_OFFSET_NORMAL},
1303+
{ tag_table_VND_CANON, "Canon", NULL, NULL, 0, 0, MN_ORDER_INTEL, MN_OFFSET_NORMAL},
1304+
{ tag_table_VND_CASIO, "CASIO", NULL, NULL, 0, 0, MN_ORDER_MOTOROLA, MN_OFFSET_NORMAL},
1305+
{ tag_table_VND_FUJI, "FUJIFILM", NULL, "FUJIFILM\x0C\x00\x00\x00", 12, 12, MN_ORDER_INTEL, MN_OFFSET_MAKER},
1306+
{ tag_table_VND_NIKON, "NIKON", NULL, "Nikon\x00\x01\x00", 8, 8, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1307+
{ tag_table_VND_NIKON_990, "NIKON", NULL, NULL, 0, 0, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1308+
{ tag_table_VND_OLYMPUS, "OLYMPUS OPTICAL CO.,LTD", NULL, "OLYMP\x00\x01\x00", 8, 8, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1309+
{ tag_table_VND_SAMSUNG, "SAMSUNG", NULL, NULL, 0, 0, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1310+
{ tag_table_VND_PANASONIC, "Panasonic", NULL, "Panasonic\x00\x00\x00", 12, 12, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1311+
{ tag_table_VND_DJI, "DJI", NULL, NULL, 0, 0, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1312+
{ tag_table_VND_SONY, "SONY", NULL, "SONY DSC \x00\x00\x00", 12, 12, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1313+
{ tag_table_VND_SONY, "SONY", NULL, 0, 0, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1314+
{ tag_table_VND_PENTAX, "PENTAX", NULL, "AOC\x00", 6, 6, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1315+
{ tag_table_VND_MINOLTA, "Minolta, KONICA MINOLTA", NULL, NULL, 0, 0, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1316+
{ tag_table_VND_SIGMA, "SIGMA, FOVEON", NULL, "SIGMA\x00\x00\x00", 10, 10, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1317+
{ tag_table_VND_SIGMA, "SIGMA, FOVEON", NULL, "FOVEON\x00\x00\x00", 10, 10, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
1318+
{ tag_table_VND_KYOCERA, "KYOCERA, CONTAX", NULL, "KYOCERA \x00\x00\x00", 22, 22, MN_ORDER_NORMAL, MN_OFFSET_MAKER},
1319+
{ tag_table_VND_RICOH, "RICOH", NULL, "Ricoh", 5, 5, MN_ORDER_MOTOROLA, MN_OFFSET_NORMAL},
1320+
{ tag_table_VND_RICOH, "RICOH", NULL, "RICOH", 5, 5, MN_ORDER_MOTOROLA, MN_OFFSET_NORMAL},
13271321

13281322
/* These re-uses existing formats */
13291323
{ tag_table_VND_OLYMPUS, "AGFA", "AGFA \x00\x01", 8, 8, MN_ORDER_NORMAL, MN_OFFSET_NORMAL},
@@ -3185,7 +3179,7 @@ static int exif_process_IFD_TAG(image_info_type *ImageInfo, char *dir_entry, cha
31853179
/*return TRUE;*/
31863180
}
31873181

3188-
if (components <= 0) {
3182+
if (components < 0) {
31893183
exif_error_docref("exif_read_data#error_ifd" EXIFERR_CC, ImageInfo, E_WARNING, "Process tag(x%04X=%s): Illegal components(%d)", tag, exif_get_tagname(tag, tagname, -12, tag_table), components);
31903184
return FALSE;
31913185
}

ext/exif/tests/bug68547.phpt

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,48 @@ Bug #68547 (Exif Header component value check error)
44
<?php if (!extension_loaded('exif')) print 'skip exif extension not available';?>
55
--FILE--
66
<?php
7-
exif_read_data(__DIR__ . DIRECTORY_SEPARATOR . 'bug68547.jpg');
7+
var_dump(exif_read_data(__DIR__ . DIRECTORY_SEPARATOR . 'bug68547.jpg'));
88
?>
99
===DONE===
1010
--EXPECTF--
11-
Warning: exif_read_data(bug68547.jpg): Process tag(x9C9E=Keywords ): Illegal components(%d) in %sbug68547.php on line %d
11+
array(12) {
12+
["FileName"]=>
13+
string(12) "bug68547.jpg"
14+
["FileDateTime"]=>
15+
int(%d)
16+
["FileSize"]=>
17+
int(713)
18+
["FileType"]=>
19+
int(2)
20+
["MimeType"]=>
21+
string(10) "image/jpeg"
22+
["SectionsFound"]=>
23+
string(20) "ANY_TAG, IFD0, WINXP"
24+
["COMPUTED"]=>
25+
array(5) {
26+
["html"]=>
27+
string(20) "width="1" height="1""
28+
["Height"]=>
29+
int(1)
30+
["Width"]=>
31+
int(1)
32+
["IsColor"]=>
33+
int(1)
34+
["ByteOrderMotorola"]=>
35+
int(0)
36+
}
37+
["Subject"]=>
38+
string(10) "Subjec??.."
39+
["Keywords"]=>
40+
string(0) ""
41+
["Author"]=>
42+
string(9) "Rui Carmo"
43+
["Comments"]=>
44+
string(29) "Comments
45+
Line2
46+
Line3
47+
Line4"
48+
["Title"]=>
49+
string(8) "Title..."
50+
}
1251
===DONE===

ext/exif/tests/bug68799.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,14 @@ print_r(exif_read_data(__DIR__.'/bug68799.jpg'));
3939

4040
?>
4141
--EXPECTF--
42-
Warning: exif_read_data(bug68799.jpg): Process tag(x9C9D=Author ): Illegal components(%d) in %s on line %d
4342
Array
4443
(
4544
[FileName] => bug68799.jpg
4645
[FileDateTime] => %d
4746
[FileSize] => 735
4847
[FileType] => 2
4948
[MimeType] => image/jpeg
50-
[SectionsFound] => ANY_TAG, IFD0
49+
[SectionsFound] => ANY_TAG, IFD0, WINXP
5150
[COMPUTED] => Array
5251
(
5352
[html] => width="1" height="1"
@@ -60,4 +59,5 @@ Array
6059
[XResolution] => 96/1
6160
[YResolution] => 96/1
6261
[ResolutionUnit] => 2
62+
[Author] =>
6363
)

ext/exif/tests/bug72094.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ Warning: exif_read_data(bug72094_3.jpg): Process tag(x3030=UndefinedTa): Illegal
4747

4848
Warning: exif_read_data(bug72094_3.jpg): Process tag(x3030=UndefinedTa): Illegal format code 0x3030, suppose BYTE in %s%ebug72094.php on line %d
4949

50-
Warning: exif_read_data(bug72094_3.jpg): Process tag(x3030=UndefinedTa): Illegal components(%d) in %s%ebug72094.php on line %d
50+
Warning: exif_read_data(bug72094_3.jpg): Illegal IFD size in %s%ebug72094.php on line %d
5151

5252
Warning: exif_read_data(bug72094_3.jpg): File structure corrupted in %s%ebug72094.php on line %d
5353

ext/exif/tests/bug73737.phpt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,5 @@ Bug #73737 (Crash when parsing a tag format)
88
var_dump($exif);
99
?>
1010
--EXPECTF--
11-
Warning: exif_thumbnail(bug73737.tiff): Process tag(x0100=ImageWidth ): Illegal components(0) in %s on line %d
12-
1311
Warning: exif_thumbnail(bug73737.tiff): Error in TIFF: filesize(x0030) less than start of IFD dir(x10102) in %s line %d
1412
bool(false)

0 commit comments

Comments
 (0)