1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-22 16:18:08 +02:00

Stop special-casing the (very unlikely) "no /XObject found"-scenario, when parsing OPS.paintXObject operators, in PartialEvaluator.{getOperatorList, getTextContent}

Originally there weren't any (generally) good ways to handle errors gracefully, on the worker-side, however that's no longer the case and we can simply fallback to the existing `ignoreErrors` functionality instead.
Also, please note that the "no `/XObject` found"-scenario should be *extremely* unlikely in practice and would only occur in corrupt/broken documents.

Note that the `PartialEvaluator.getOperatorList` case is especially bad currently, since we'll simply (attempt to) send the data as-is to the main-thread. This is quite bad, since in a corrupt/broken document the data *could* contain anything and e.g. be unclonable (which would cause breaking errors).
Also, we're (obviously) not attempting to do anything with this "raw" `OPS.paintXObject` data on the main-thread and simply ensuring that we never send it definately seems like the correct approach.
This commit is contained in:
Jonas Jenwald 2020-07-12 16:34:05 +02:00
parent 7dabc5ecc8
commit d4d7ac1b88
3 changed files with 22 additions and 19 deletions

View file

@ -1331,11 +1331,6 @@ class PartialEvaluator {
xobj = xref.fetch(xobj);
}
if (!xobj) {
operatorList.addOp(fn, args);
resolveXObject();
return;
}
if (!isStream(xobj)) {
throw new FormatError("XObject should be a stream");
}
@ -2287,10 +2282,6 @@ class PartialEvaluator {
xobj = xref.fetch(xobj);
}
if (!xobj) {
resolveXObject();
return;
}
if (!isStream(xobj)) {
throw new FormatError("XObject should be a stream");
}

View file

@ -2433,10 +2433,6 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
this.ctx.fillRect(0, 0, 1, 1);
},
paintXObject: function CanvasGraphics_paintXObject() {
warn("Unsupported 'paintXObject' command.");
},
// Marked content
markPoint: function CanvasGraphics_markPoint(tag) {