mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-21 07:38:07 +02:00
Merge pull request #7698 from Snuffleupagus/bug-1308536
Ignore reserved commands when parsing operands in `CFFParser_parseDict`, instead of just rejecting the entire font (bug 1308536)
This commit is contained in:
commit
b4100ba651
5 changed files with 50 additions and 12 deletions
1
test/pdfs/.gitignore
vendored
1
test/pdfs/.gitignore
vendored
|
@ -55,6 +55,7 @@
|
|||
!bug1068432.pdf
|
||||
!bug1146106.pdf
|
||||
!bug1252420.pdf
|
||||
!bug1308536.pdf
|
||||
!issue5564_reduced.pdf
|
||||
!canvas.pdf
|
||||
!bug1132849.pdf
|
||||
|
|
BIN
test/pdfs/bug1308536.pdf
Normal file
BIN
test/pdfs/bug1308536.pdf
Normal file
Binary file not shown.
|
@ -784,6 +784,13 @@
|
|||
"link": false,
|
||||
"type": "load"
|
||||
},
|
||||
{ "id": "bug1308536",
|
||||
"file": "pdfs/bug1308536.pdf",
|
||||
"md5": "cc2258981e33ad8d96acbf87318716d5",
|
||||
"rounds": 1,
|
||||
"link": false,
|
||||
"type": "eq"
|
||||
},
|
||||
{ "id": "bug1252420",
|
||||
"file": "pdfs/bug1252420.pdf",
|
||||
"md5": "f21c911b9b655972b06ef782a1fa6a17",
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* globals describe, it, expect, beforeAll, afterAll, Stream, CFFParser,
|
||||
SEAC_ANALYSIS_ENABLED, CFFIndex, CFFStrings, CFFCompiler */
|
||||
/* globals describe, it, expect, beforeAll, afterAll, beforeEach, afterEach,
|
||||
Stream, CFFParser, SEAC_ANALYSIS_ENABLED, CFFIndex, CFFStrings,
|
||||
CFFCompiler */
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -33,14 +34,22 @@ describe('CFFParser', function() {
|
|||
fontArr.push(parseInt(hex, 16));
|
||||
}
|
||||
fontData = new Stream(fontArr);
|
||||
done();
|
||||
});
|
||||
|
||||
afterAll(function () {
|
||||
fontData = null;
|
||||
});
|
||||
|
||||
beforeEach(function (done) {
|
||||
parser = new CFFParser(fontData, {}, SEAC_ANALYSIS_ENABLED);
|
||||
cff = parser.parse();
|
||||
done();
|
||||
});
|
||||
|
||||
afterAll(function () {
|
||||
fontData = parser = cff = null;
|
||||
afterEach(function (done) {
|
||||
parser = cff = null;
|
||||
done();
|
||||
});
|
||||
|
||||
it('parses header', function() {
|
||||
|
@ -104,6 +113,24 @@ describe('CFFParser', function() {
|
|||
expect(topDict.getByName('UnderlinePosition')).toEqual(defaultValue);
|
||||
});
|
||||
|
||||
it('ignores reserved commands in parseDict, and refuses to add privateDict ' +
|
||||
'keys with invalid values (bug 1308536)', function () {
|
||||
var bytes = new Uint8Array([
|
||||
64, 39, 31, 30, 252, 114, 137, 115, 79, 30, 197, 119, 2, 99, 127, 6
|
||||
]);
|
||||
parser.bytes = bytes;
|
||||
var topDict = cff.topDict;
|
||||
topDict.setByName('Private', [bytes.length, 0]);
|
||||
|
||||
var parsePrivateDict = function () {
|
||||
parser.parsePrivateDict(topDict);
|
||||
};
|
||||
expect(parsePrivateDict).not.toThrow();
|
||||
|
||||
var privateDict = topDict.privateDict;
|
||||
expect(privateDict.getByName('BlueValues')).toBeNull();
|
||||
});
|
||||
|
||||
it('parses a CharString having cntrmask', function() {
|
||||
var bytes = new Uint8Array([0, 1, // count
|
||||
1, // offsetSize
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue