Prevent infinite loop in CFFParser_parseHeader

This commit is contained in:
Jonas Jenwald 2014-03-13 12:33:42 +01:00
parent 1a6e103c35
commit 5f021b067c

View File

@ -5628,12 +5628,17 @@ var CFFParser = (function CFFParserClosure() {
},
parseHeader: function CFFParser_parseHeader() {
var bytes = this.bytes;
var bytesLength = bytes.length;
var offset = 0;
while (bytes[offset] != 1)
// Prevent an infinite loop, by checking that the offset is within the
// bounds of the bytes array. Necessary in empty, or invalid, font files.
while (offset < bytesLength && bytes[offset] !== 1) {
++offset;
if (offset !== 0) {
}
if (offset >= bytesLength) {
error('Invalid CFF header');
} else if (offset !== 0) {
info('cff data is shifted');
bytes = bytes.subarray(offset);
this.bytes = bytes;