From c80228651ad395a9abc9dab75009a620ef95f277 Mon Sep 17 00:00:00 2001 From: Gunnsteinn Hall Date: Tue, 26 Mar 2019 02:09:40 +0000 Subject: [PATCH] Fix for invalid DecodeParms when DecodeParms not set (Flate). Clean up. --- pdf/core/encoding.go | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/pdf/core/encoding.go b/pdf/core/encoding.go index d837f183..04c37d94 100644 --- a/pdf/core/encoding.go +++ b/pdf/core/encoding.go @@ -181,21 +181,21 @@ func newFlateEncoderFromStream(streamObj *PdfObjectStream, decodeParams *PdfObje // If decodeParams not provided, see if we can get from the stream. if decodeParams == nil { obj := TraceToDirectObject(encDict.Get("DecodeParms")) - if obj != nil { - if arr, isArr := obj.(*PdfObjectArray); isArr { - if arr.Len() != 1 { - common.Log.Debug("Error: DecodeParms array length != 1 (%d)", arr.Len()) - return nil, errors.New("range check error") - } - obj = TraceToDirectObject(arr.Get(0)) + switch t := obj.(type) { + case *PdfObjectArray: + arr := t + if arr.Len() != 1 { + common.Log.Debug("Error: DecodeParms array length != 1 (%d)", arr.Len()) + return nil, errors.New("range check error") } - - dp, isDict := obj.(*PdfObjectDictionary) - if !isDict { - common.Log.Debug("Error: DecodeParms not a dictionary (%T)", obj) - return nil, fmt.Errorf("invalid DecodeParms") - } - decodeParams = dp + obj = TraceToDirectObject(arr.Get(0)) + case *PdfObjectDictionary: + decodeParams = t + case *PdfObjectNull, nil: + // No decode params set. + default: + common.Log.Debug("Error: DecodeParms not a dictionary (%T)", obj) + return nil, fmt.Errorf("invalid DecodeParms") } } if decodeParams == nil { @@ -1897,8 +1897,8 @@ func (enc *CCITTFaxEncoder) DecodeBytes(encoded []byte) ([]byte, error) { EndOfBlock: enc.EndOfBlock, BlackIs1: enc.BlackIs1, DamagedRowsBeforeError: enc.DamagedRowsBeforeError, - Rows: enc.Rows, - EncodedByteAlign: enc.EncodedByteAlign, + Rows: enc.Rows, + EncodedByteAlign: enc.EncodedByteAlign, } pixels, err := encoder.Decode(encoded) @@ -1968,8 +1968,8 @@ func (enc *CCITTFaxEncoder) EncodeBytes(data []byte) ([]byte, error) { EndOfBlock: enc.EndOfBlock, BlackIs1: enc.BlackIs1, DamagedRowsBeforeError: enc.DamagedRowsBeforeError, - Rows: enc.Rows, - EncodedByteAlign: enc.EncodedByteAlign, + Rows: enc.Rows, + EncodedByteAlign: enc.EncodedByteAlign, } return encoder.Encode(pixels), nil