# HG changeset patch # User Matti Hamalainen # Date 1586195287 -10800 # Node ID bf4115b6dc2aa53e98118f2cddb6fc6875ceb081 # Parent 9638512be261e3d0aa806ec6c0ba2a67ec42d3c2 Improve WebP parsing resiliency. feof($fh) does not return true when ftell() == filesize exactly. diff -r 9638512be261 -r bf4115b6dc2a mgtool.php --- a/mgtool.php Mon Apr 06 20:26:21 2020 +0300 +++ b/mgtool.php Mon Apr 06 20:48:07 2020 +0300 @@ -279,7 +279,7 @@ return "Invalid WebP file, chunk size larger than file size"; $done = 0; - while (!feof($fh) && $done < 2) + while (!feof($fh) && ftell($fh) < $fileData["size"] && $done < 2) { // Read chunk header if (($data = @fread($fh, 2 * 4)) == FALSE) @@ -287,12 +287,12 @@ $chunk = unpack("c4id/L1size", $data); - /* +/* printf("chunk: '%c%c%c%c' (%02x %02x %02x %02x) osize=%d\n", $chunk["id1"], $chunk["id2"], $chunk["id3"], $chunk["id4"], $chunk["id1"], $chunk["id2"], $chunk["id3"], $chunk["id4"], $chunk["size"]); - */ +*/ // Check for EXIF chunk if ($chunk["id1"] == 0x45 && $chunk["id2"] == 0x58 &&