Browse Source

PDF.js version 1.7.393 - See mozilla/pdf.js@ede4d3c7c50ef720e59106de7fa0b32f20f6f085

pdfjsbot 8 years ago
parent
commit
5b51063840
12 changed files with 162 additions and 81 deletions
  1. 1 1
      bower.json
  2. 52 25
      build/pdf.combined.js
  3. 6 6
      build/pdf.js
  4. 0 0
      build/pdf.min.js
  5. 48 21
      build/pdf.worker.js
  6. 0 0
      build/pdf.worker.min.js
  7. 46 19
      lib/core/jpg.js
  8. 2 2
      lib/display/api.js
  9. 2 2
      lib/display/global.js
  10. 2 2
      lib/pdf.js
  11. 2 2
      lib/pdf.worker.js
  12. 1 1
      package.json

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
   "name": "pdfjs-dist",
-  "version": "1.7.391",
+  "version": "1.7.393",
   "main": [
     "build/pdf.js",
     "build/pdf.worker.js"

+ 52 - 25
build/pdf.combined.js

@@ -12716,8 +12716,8 @@ var _UnsupportedManager = function UnsupportedManagerClosure() {
     }
   };
 }();
-exports.version = '1.7.391';
-exports.build = 'cd5acf50';
+exports.version = '1.7.393';
+exports.build = 'ede4d3c7';
 exports.getDocument = getDocument;
 exports.PDFDataRangeTransport = PDFDataRangeTransport;
 exports.PDFWorker = PDFWorker;
@@ -27891,8 +27891,8 @@ if (!globalScope.PDFJS) {
   globalScope.PDFJS = {};
 }
 var PDFJS = globalScope.PDFJS;
-PDFJS.version = '1.7.391';
-PDFJS.build = 'cd5acf50';
+PDFJS.version = '1.7.393';
+PDFJS.build = 'ede4d3c7';
 PDFJS.pdfBug = false;
 if (PDFJS.verbosity !== undefined) {
   sharedUtil.setVerbosityLevel(PDFJS.verbosity);
@@ -35104,7 +35104,7 @@ var JpegImage = function JpegImageClosure() {
       decodeFn = decodeBaseline;
     }
     var mcu = 0,
-        marker;
+        fileMarker;
     var mcuExpected;
     if (componentsLength === 1) {
       mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;
@@ -35140,12 +35140,13 @@ var JpegImage = function JpegImageClosure() {
         }
       }
       bitsCount = 0;
-      marker = data[offset] << 8 | data[offset + 1];
-      while (data[offset] === 0x00 && offset < data.length - 1) {
-        offset++;
-        marker = data[offset] << 8 | data[offset + 1];
+      fileMarker = findNextFileMarker(data, offset);
+      if (fileMarker && fileMarker.invalid) {
+        warn('decodeScan - unexpected MCU data, next marker is: ' + fileMarker.invalid);
+        offset = fileMarker.offset;
       }
-      if (marker <= 0xFF00) {
+      var marker = fileMarker && fileMarker.marker;
+      if (!marker || marker <= 0xFF00) {
         error('JPEG error: marker was not found');
       }
       if (marker >= 0xFFD0 && marker <= 0xFFD7) {
@@ -35154,6 +35155,11 @@ var JpegImage = function JpegImageClosure() {
         break;
       }
     }
+    fileMarker = findNextFileMarker(data, offset);
+    if (fileMarker && fileMarker.invalid) {
+      warn('decodeScan - unexpected Scan data, next marker is: ' + fileMarker.invalid);
+      offset = fileMarker.offset;
+    }
     return offset - startOffset;
   }
   function quantizeAndInverse(component, blockBufferOffset, p) {
@@ -35320,6 +35326,36 @@ var JpegImage = function JpegImageClosure() {
   function clamp0to255(a) {
     return a <= 0 ? 0 : a >= 255 ? 255 : a;
   }
+  function findNextFileMarker(data, currentPos, startPos) {
+    function peekUint16(pos) {
+      return data[pos] << 8 | data[pos + 1];
+    }
+    var maxPos = data.length - 1;
+    var newPos = startPos < currentPos ? startPos : currentPos;
+    if (currentPos >= maxPos) {
+      return null;
+    }
+    var currentMarker = peekUint16(currentPos);
+    if (currentMarker >= 0xFFC0 && currentMarker <= 0xFFFE) {
+      return {
+        invalid: null,
+        marker: currentMarker,
+        offset: currentPos
+      };
+    }
+    var newMarker = peekUint16(newPos);
+    while (!(newMarker >= 0xFFC0 && newMarker <= 0xFFFE)) {
+      if (++newPos >= maxPos) {
+        return null;
+      }
+      newMarker = peekUint16(newPos);
+    }
+    return {
+      invalid: currentMarker.toString(16),
+      marker: newMarker,
+      offset: newPos
+    };
+  }
   JpegImage.prototype = {
     parse: function parse(data) {
       function readUint16() {
@@ -35328,21 +35364,12 @@ var JpegImage = function JpegImageClosure() {
         return value;
       }
       function readDataBlock() {
-        function isValidMarkerAt(pos) {
-          if (pos < data.length - 1) {
-            return data[pos] === 0xFF && data[pos + 1] >= 0xC0 && data[pos + 1] <= 0xFE;
-          }
-          return true;
-        }
         var length = readUint16();
         var endOffset = offset + length - 2;
-        if (!isValidMarkerAt(endOffset)) {
-          warn('readDataBlock - incorrect length, next marker is: ' + (data[endOffset] << 8 | data[endOffset + 1]).toString('16'));
-          var pos = offset;
-          while (!isValidMarkerAt(pos)) {
-            pos++;
-          }
-          endOffset = pos;
+        var fileMarker = findNextFileMarker(data, endOffset, offset);
+        if (fileMarker && fileMarker.invalid) {
+          warn('readDataBlock - incorrect length, next marker is: ' + fileMarker.invalid);
+          endOffset = fileMarker.offset;
         }
         var array = data.subarray(offset, endOffset);
         offset += array.length;
@@ -43403,8 +43430,8 @@ exports.TilingPattern = TilingPattern;
 "use strict";
 
 
-var pdfjsVersion = '1.7.391';
-var pdfjsBuild = 'cd5acf50';
+var pdfjsVersion = '1.7.393';
+var pdfjsBuild = 'ede4d3c7';
 var pdfjsSharedUtil = __w_pdfjs_require__(0);
 var pdfjsDisplayGlobal = __w_pdfjs_require__(26);
 var pdfjsDisplayAPI = __w_pdfjs_require__(10);

+ 6 - 6
build/pdf.js

@@ -3430,8 +3430,8 @@ var _UnsupportedManager = function UnsupportedManagerClosure() {
     }
   };
 }();
-exports.version = '1.7.391';
-exports.build = 'cd5acf50';
+exports.version = '1.7.393';
+exports.build = 'ede4d3c7';
 exports.getDocument = getDocument;
 exports.PDFDataRangeTransport = PDFDataRangeTransport;
 exports.PDFWorker = PDFWorker;
@@ -5370,8 +5370,8 @@ if (!globalScope.PDFJS) {
   globalScope.PDFJS = {};
 }
 var PDFJS = globalScope.PDFJS;
-PDFJS.version = '1.7.391';
-PDFJS.build = 'cd5acf50';
+PDFJS.version = '1.7.393';
+PDFJS.build = 'ede4d3c7';
 PDFJS.pdfBug = false;
 if (PDFJS.verbosity !== undefined) {
   sharedUtil.setVerbosityLevel(PDFJS.verbosity);
@@ -7881,8 +7881,8 @@ exports.TilingPattern = TilingPattern;
 "use strict";
 
 
-var pdfjsVersion = '1.7.391';
-var pdfjsBuild = 'cd5acf50';
+var pdfjsVersion = '1.7.393';
+var pdfjsBuild = 'ede4d3c7';
 var pdfjsSharedUtil = __w_pdfjs_require__(0);
 var pdfjsDisplayGlobal = __w_pdfjs_require__(9);
 var pdfjsDisplayAPI = __w_pdfjs_require__(3);

File diff suppressed because it is too large
+ 0 - 0
build/pdf.min.js


+ 48 - 21
build/pdf.worker.js

@@ -31455,7 +31455,7 @@ var JpegImage = function JpegImageClosure() {
       decodeFn = decodeBaseline;
     }
     var mcu = 0,
-        marker;
+        fileMarker;
     var mcuExpected;
     if (componentsLength === 1) {
       mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;
@@ -31491,12 +31491,13 @@ var JpegImage = function JpegImageClosure() {
         }
       }
       bitsCount = 0;
-      marker = data[offset] << 8 | data[offset + 1];
-      while (data[offset] === 0x00 && offset < data.length - 1) {
-        offset++;
-        marker = data[offset] << 8 | data[offset + 1];
+      fileMarker = findNextFileMarker(data, offset);
+      if (fileMarker && fileMarker.invalid) {
+        warn('decodeScan - unexpected MCU data, next marker is: ' + fileMarker.invalid);
+        offset = fileMarker.offset;
       }
-      if (marker <= 0xFF00) {
+      var marker = fileMarker && fileMarker.marker;
+      if (!marker || marker <= 0xFF00) {
         error('JPEG error: marker was not found');
       }
       if (marker >= 0xFFD0 && marker <= 0xFFD7) {
@@ -31505,6 +31506,11 @@ var JpegImage = function JpegImageClosure() {
         break;
       }
     }
+    fileMarker = findNextFileMarker(data, offset);
+    if (fileMarker && fileMarker.invalid) {
+      warn('decodeScan - unexpected Scan data, next marker is: ' + fileMarker.invalid);
+      offset = fileMarker.offset;
+    }
     return offset - startOffset;
   }
   function quantizeAndInverse(component, blockBufferOffset, p) {
@@ -31671,6 +31677,36 @@ var JpegImage = function JpegImageClosure() {
   function clamp0to255(a) {
     return a <= 0 ? 0 : a >= 255 ? 255 : a;
   }
+  function findNextFileMarker(data, currentPos, startPos) {
+    function peekUint16(pos) {
+      return data[pos] << 8 | data[pos + 1];
+    }
+    var maxPos = data.length - 1;
+    var newPos = startPos < currentPos ? startPos : currentPos;
+    if (currentPos >= maxPos) {
+      return null;
+    }
+    var currentMarker = peekUint16(currentPos);
+    if (currentMarker >= 0xFFC0 && currentMarker <= 0xFFFE) {
+      return {
+        invalid: null,
+        marker: currentMarker,
+        offset: currentPos
+      };
+    }
+    var newMarker = peekUint16(newPos);
+    while (!(newMarker >= 0xFFC0 && newMarker <= 0xFFFE)) {
+      if (++newPos >= maxPos) {
+        return null;
+      }
+      newMarker = peekUint16(newPos);
+    }
+    return {
+      invalid: currentMarker.toString(16),
+      marker: newMarker,
+      offset: newPos
+    };
+  }
   JpegImage.prototype = {
     parse: function parse(data) {
       function readUint16() {
@@ -31679,21 +31715,12 @@ var JpegImage = function JpegImageClosure() {
         return value;
       }
       function readDataBlock() {
-        function isValidMarkerAt(pos) {
-          if (pos < data.length - 1) {
-            return data[pos] === 0xFF && data[pos + 1] >= 0xC0 && data[pos + 1] <= 0xFE;
-          }
-          return true;
-        }
         var length = readUint16();
         var endOffset = offset + length - 2;
-        if (!isValidMarkerAt(endOffset)) {
-          warn('readDataBlock - incorrect length, next marker is: ' + (data[endOffset] << 8 | data[endOffset + 1]).toString('16'));
-          var pos = offset;
-          while (!isValidMarkerAt(pos)) {
-            pos++;
-          }
-          endOffset = pos;
+        var fileMarker = findNextFileMarker(data, endOffset, offset);
+        if (fileMarker && fileMarker.invalid) {
+          warn('readDataBlock - incorrect length, next marker is: ' + fileMarker.invalid);
+          endOffset = fileMarker.offset;
         }
         var array = data.subarray(offset, endOffset);
         offset += array.length;
@@ -36863,8 +36890,8 @@ exports.Type1Parser = Type1Parser;
 "use strict";
 
 
-var pdfjsVersion = '1.7.391';
-var pdfjsBuild = 'cd5acf50';
+var pdfjsVersion = '1.7.393';
+var pdfjsBuild = 'ede4d3c7';
 var pdfjsCoreWorker = __w_pdfjs_require__(8);
 {
   __w_pdfjs_require__(19);

File diff suppressed because it is too large
+ 0 - 0
build/pdf.worker.min.js


+ 46 - 19
lib/core/jpg.js

@@ -278,7 +278,7 @@ var JpegImage = function JpegImageClosure() {
       decodeFn = decodeBaseline;
     }
     var mcu = 0,
-        marker;
+        fileMarker;
     var mcuExpected;
     if (componentsLength === 1) {
       mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;
@@ -314,12 +314,13 @@ var JpegImage = function JpegImageClosure() {
         }
       }
       bitsCount = 0;
-      marker = data[offset] << 8 | data[offset + 1];
-      while (data[offset] === 0x00 && offset < data.length - 1) {
-        offset++;
-        marker = data[offset] << 8 | data[offset + 1];
+      fileMarker = findNextFileMarker(data, offset);
+      if (fileMarker && fileMarker.invalid) {
+        warn('decodeScan - unexpected MCU data, next marker is: ' + fileMarker.invalid);
+        offset = fileMarker.offset;
       }
-      if (marker <= 0xFF00) {
+      var marker = fileMarker && fileMarker.marker;
+      if (!marker || marker <= 0xFF00) {
         error('JPEG error: marker was not found');
       }
       if (marker >= 0xFFD0 && marker <= 0xFFD7) {
@@ -328,6 +329,11 @@ var JpegImage = function JpegImageClosure() {
         break;
       }
     }
+    fileMarker = findNextFileMarker(data, offset);
+    if (fileMarker && fileMarker.invalid) {
+      warn('decodeScan - unexpected Scan data, next marker is: ' + fileMarker.invalid);
+      offset = fileMarker.offset;
+    }
     return offset - startOffset;
   }
   function quantizeAndInverse(component, blockBufferOffset, p) {
@@ -494,6 +500,36 @@ var JpegImage = function JpegImageClosure() {
   function clamp0to255(a) {
     return a <= 0 ? 0 : a >= 255 ? 255 : a;
   }
+  function findNextFileMarker(data, currentPos, startPos) {
+    function peekUint16(pos) {
+      return data[pos] << 8 | data[pos + 1];
+    }
+    var maxPos = data.length - 1;
+    var newPos = startPos < currentPos ? startPos : currentPos;
+    if (currentPos >= maxPos) {
+      return null;
+    }
+    var currentMarker = peekUint16(currentPos);
+    if (currentMarker >= 0xFFC0 && currentMarker <= 0xFFFE) {
+      return {
+        invalid: null,
+        marker: currentMarker,
+        offset: currentPos
+      };
+    }
+    var newMarker = peekUint16(newPos);
+    while (!(newMarker >= 0xFFC0 && newMarker <= 0xFFFE)) {
+      if (++newPos >= maxPos) {
+        return null;
+      }
+      newMarker = peekUint16(newPos);
+    }
+    return {
+      invalid: currentMarker.toString(16),
+      marker: newMarker,
+      offset: newPos
+    };
+  }
   JpegImage.prototype = {
     parse: function parse(data) {
       function readUint16() {
@@ -502,21 +538,12 @@ var JpegImage = function JpegImageClosure() {
         return value;
       }
       function readDataBlock() {
-        function isValidMarkerAt(pos) {
-          if (pos < data.length - 1) {
-            return data[pos] === 0xFF && data[pos + 1] >= 0xC0 && data[pos + 1] <= 0xFE;
-          }
-          return true;
-        }
         var length = readUint16();
         var endOffset = offset + length - 2;
-        if (!isValidMarkerAt(endOffset)) {
-          warn('readDataBlock - incorrect length, next marker is: ' + (data[endOffset] << 8 | data[endOffset + 1]).toString('16'));
-          var pos = offset;
-          while (!isValidMarkerAt(pos)) {
-            pos++;
-          }
-          endOffset = pos;
+        var fileMarker = findNextFileMarker(data, endOffset, offset);
+        if (fileMarker && fileMarker.invalid) {
+          warn('readDataBlock - incorrect length, next marker is: ' + fileMarker.invalid);
+          endOffset = fileMarker.offset;
         }
         var array = data.subarray(offset, endOffset);
         offset += array.length;

+ 2 - 2
lib/display/api.js

@@ -1372,8 +1372,8 @@ var _UnsupportedManager = function UnsupportedManagerClosure() {
     }
   };
 }();
-exports.version = '1.7.391';
-exports.build = 'cd5acf50';
+exports.version = '1.7.393';
+exports.build = 'ede4d3c7';
 exports.getDocument = getDocument;
 exports.PDFDataRangeTransport = PDFDataRangeTransport;
 exports.PDFWorker = PDFWorker;

+ 2 - 2
lib/display/global.js

@@ -31,8 +31,8 @@ if (!globalScope.PDFJS) {
   globalScope.PDFJS = {};
 }
 var PDFJS = globalScope.PDFJS;
-PDFJS.version = '1.7.391';
-PDFJS.build = 'cd5acf50';
+PDFJS.version = '1.7.393';
+PDFJS.build = 'ede4d3c7';
 PDFJS.pdfBug = false;
 if (PDFJS.verbosity !== undefined) {
   sharedUtil.setVerbosityLevel(PDFJS.verbosity);

+ 2 - 2
lib/pdf.js

@@ -14,8 +14,8 @@
  */
 'use strict';
 
-var pdfjsVersion = '1.7.391';
-var pdfjsBuild = 'cd5acf50';
+var pdfjsVersion = '1.7.393';
+var pdfjsBuild = 'ede4d3c7';
 var pdfjsSharedUtil = require('./shared/util.js');
 var pdfjsDisplayGlobal = require('./display/global.js');
 var pdfjsDisplayAPI = require('./display/api.js');

+ 2 - 2
lib/pdf.worker.js

@@ -14,8 +14,8 @@
  */
 'use strict';
 
-var pdfjsVersion = '1.7.391';
-var pdfjsBuild = 'cd5acf50';
+var pdfjsVersion = '1.7.393';
+var pdfjsBuild = 'ede4d3c7';
 var pdfjsCoreWorker = require('./core/worker.js');
 {
   require('./core/network.js');

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "pdfjs-dist",
-  "version": "1.7.391",
+  "version": "1.7.393",
   "main": "build/pdf.js",
   "description": "Generic build of Mozilla's PDF.js library.",
   "keywords": [

Some files were not shown because too many files changed in this diff