mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-29 13:48:54 +08:00
Fixed problem found by fuzzing when Encrypt pointing to invalid reference
This commit is contained in:
parent
6e30b10029
commit
b2bb6d9836
@ -104,3 +104,22 @@ endstream
|
||||
t.Errorf("Should fail with an error")
|
||||
}
|
||||
}
|
||||
|
||||
// Problem where:
|
||||
//
|
||||
func TestFuzzIsEncryptedFail1(t *testing.T) {
|
||||
parser := PdfParser{}
|
||||
parser.rs, parser.reader = makeReaderForText(" /Name")
|
||||
|
||||
ref := &PdfObjectReference{ObjectNumber: -1}
|
||||
|
||||
parser.trailer = MakeDict()
|
||||
parser.trailer.Set("Encrypt", ref)
|
||||
|
||||
_, err := parser.IsEncrypted()
|
||||
if err == nil {
|
||||
t.Errorf("err == nil: %v. Should fail.", err)
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1487,7 +1487,14 @@ func (this *PdfParser) IsEncrypted() (bool, error) {
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
encDict, ok := encObj.(*PdfIndirectObject).PdfObject.(*PdfObjectDictionary)
|
||||
|
||||
encIndObj, ok := encObj.(*PdfIndirectObject)
|
||||
if !ok {
|
||||
common.Log.Debug("Encryption object not an indirect object")
|
||||
return false, errors.New("Type check error")
|
||||
}
|
||||
encDict, ok := encIndObj.PdfObject.(*PdfObjectDictionary)
|
||||
|
||||
common.Log.Trace("2: %q", encDict)
|
||||
if !ok {
|
||||
return false, errors.New("Trailer Encrypt object non dictionary")
|
||||
|
Loading…
x
Reference in New Issue
Block a user