From 0844a72b4dd84852f4b9cf9d341610b015161195 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 3 Nov 2016 20:08:06 +0100 Subject: [PATCH] Add a bit more validation to `Catalog_readPageLabels`, to ensure that the Page Labels are well formed --- src/core/obj.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/core/obj.js b/src/core/obj.js index 7196797ba..19de8dffa 100644 --- a/src/core/obj.js +++ b/src/core/obj.js @@ -283,7 +283,6 @@ var Catalog = (function CatalogClosure() { var pageLabels = new Array(this.numPages); var style = null; var prefix = ''; - var start = 1; var numberTree = new NumberTree(obj, this.xref); var nums = numberTree.getAll(); @@ -300,15 +299,16 @@ var Catalog = (function CatalogClosure() { var s = labelDict.get('S'); assert(!s || isName(s), 'Invalid style in PageLabel dictionary.'); - style = (s ? s.name : null); + style = s ? s.name : null; - var p = labelDict.get('P') || ''; - assert(isString(p), 'Invalid prefix in PageLabel dictionary.'); - prefix = stringToPDFString(p); + var p = labelDict.get('P'); + assert(!p || isString(p), 'Invalid prefix in PageLabel dictionary.'); + prefix = p ? stringToPDFString(p) : ''; - start = labelDict.get('St') || 1; - assert(isInt(start), 'Invalid start in PageLabel dictionary.'); - currentIndex = start; + var st = labelDict.get('St'); + assert(!st || (isInt(st) && st >= 1), + 'Invalid start in PageLabel dictionary.'); + currentIndex = st || 1; } switch (style) {