http://www.mediawiki.org/wiki/Special:Code/MediaWiki/99477
Revision: 99477
Author: bawolff
Date: 2011-10-11 14:05:23 +0000 (Tue, 11 Oct 2011)
Log Message:
-----------
(bug 31588, sort of) Jpeg metadata code wasn't handling padding bytes properly.
Per the spec, segments can have arbitrary runs of 0xFF's between segments that
should be skipped.
Modified Paths:
--------------
trunk/phase3/includes/media/JpegMetadataExtractor.php
Modified: trunk/phase3/includes/media/JpegMetadataExtractor.php
===================================================================
--- trunk/phase3/includes/media/JpegMetadataExtractor.php 2011-10-11
13:12:40 UTC (rev 99476)
+++ trunk/phase3/includes/media/JpegMetadataExtractor.php 2011-10-11
14:05:23 UTC (rev 99477)
@@ -58,7 +58,7 @@
throw new MWException( 'Too many jpeg segments.
Aborting' );
}
if ( $buffer !== "\xFF" ) {
- throw new MWException( "Error reading jpeg file
marker" );
+ throw new MWException( "Error reading jpeg file
marker. Expected 0xFF but got " . bin2hex( $buffer ) );
}
$buffer = fread( $fh, 1 );
@@ -123,6 +123,9 @@
} elseif ( $buffer === "\xD9" || $buffer === "\xDA" ) {
// EOI - end of image or SOS - start of scan.
either way we're past any interesting segments
return $segments;
+ } elseif ( $buffer === "\xFF" ) {
+ // Padding byte. Skip.
+ continue;
} else {
// segment we don't care about, so skip
$size = unpack( "nint", fread( $fh, 2 ) );
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs