From 609f8c87e15fc3edc2fbf453cbf01d26c4432973 Mon Sep 17 00:00:00 2001 From: Jay Williams Date: Sun, 5 Feb 2017 07:10:19 -0600 Subject: [PATCH 1/2] Fix Division By Zero Warning for Focal Length If a file has invalid EXIF data, it can cause an division by zero warning to occur. --- lib/PHPExif/Mapper/Native.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/PHPExif/Mapper/Native.php b/lib/PHPExif/Mapper/Native.php index 49c101e..e5e826d 100644 --- a/lib/PHPExif/Mapper/Native.php +++ b/lib/PHPExif/Mapper/Native.php @@ -165,7 +165,12 @@ public function mapRawData(array $data) break; case self::FOCALLENGTH: $parts = explode('/', $value); - $value = (int) reset($parts) / (int) end($parts); + // Avoid division by zero if focal length is invalid + if (end($parts) == '0') { + $value = 0; + } else { + $value = (int) reset($parts) / (int) end($parts); + } break; case self::XRESOLUTION: case self::YRESOLUTION: From 0ce7a9fd8e4d0f9103608adfa26cfbecacbf9994 Mon Sep 17 00:00:00 2001 From: Jay Williams Date: Mon, 6 Feb 2017 07:04:45 -0600 Subject: [PATCH 2/2] Add unit test --- tests/PHPExif/Mapper/NativeMapperTest.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/PHPExif/Mapper/NativeMapperTest.php b/tests/PHPExif/Mapper/NativeMapperTest.php index 8a4c2a2..d1c6228 100644 --- a/tests/PHPExif/Mapper/NativeMapperTest.php +++ b/tests/PHPExif/Mapper/NativeMapperTest.php @@ -138,6 +138,21 @@ public function testMapRawDataCorrectlyFormatsFocalLength() $this->assertEquals(6, reset($mapped)); } + /** + * @group mapper + * @covers \PHPExif\Mapper\Native::mapRawData + */ + public function testMapRawDataCorrectlyFormatsFocalLengthDivisionByZero() + { + $rawData = array( + \PHPExif\Mapper\Native::FOCALLENGTH => '1/0', + ); + + $mapped = $this->mapper->mapRawData($rawData); + + $this->assertEquals(0, reset($mapped)); + } + /** * @group mapper * @covers \PHPExif\Mapper\Native::mapRawData