Fix a JPEG parsing issue with Progressive DCT

This commit is contained in:
Devon Govett 2011-08-23 12:49:45 -04:00
parent 431a5186fe
commit e60eae758d

View File

@ -9,14 +9,21 @@ class JPEG
constructor: (@data) ->
len = data.length
data.pos = 2 # Skip the first two bytes of JPEG identifier.
if data.readUInt16() isnt 0xFFD8
throw "SOI not found in JPEG"
markers = [0xFFC0, 0xFFC1, 0xFFC2, 0xFFC3, 0xFFC4, 0xFFC5, 0xFFC6, 0xFFC7,
0xFFC8, 0xFFC9, 0xFFCA, 0xFFCB, 0xFFCC, 0xFFCD, 0xFFCE, 0xFFCF]
while data.pos < len
marker = data.readUInt16()
break if marker is 0xFFC0
break if marker in markers
data.pos += data.readUInt16()
data.pos += 2
throw "Invalid JPEG." unless marker in markers
data.pos += 2
@bits = data.readByte()
@height = data.readShort()
@width = data.readShort()