X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=sidebyside;f=pdf%2Fxpdf%2FXRef.cc;h=5be2017842d4b6fa5a2bf61e469087ed0ea12c3a;hb=f75141348caac3ba34ff3b3d8420215386f0eb02;hp=afb787d43c8e10dccdb83f3ad84a3c905c63aa2d;hpb=25a9ea784b39a717a6b0f27ab4a8c21d9b3afc82;p=evince.git diff --git a/pdf/xpdf/XRef.cc b/pdf/xpdf/XRef.cc index afb787d4..5be20178 100644 --- a/pdf/xpdf/XRef.cc +++ b/pdf/xpdf/XRef.cc @@ -110,7 +110,7 @@ ObjectStream::ObjectStream(XRef *xref, int objStrNumA) { goto err1; } - if (nObjects*sizeof(int)/sizeof(int) != nObjects) { + if (nObjects*(int)sizeof(int)/sizeof(int) != nObjects) { error(-1, "Invalid 'nObjects'"); goto err1; } @@ -393,7 +393,7 @@ GBool XRef::readXRefTable(Parser *parser, Guint *pos) { if (newSize < 0) { goto err1; } - if (newSize*sizeof(XRefEntry)/sizeof(XRefEntry) != newSize) { + if (newSize*(int)sizeof(XRefEntry)/sizeof(XRefEntry) != newSize) { error(-1, "Invalid 'obj' parameters'"); goto err1; } @@ -503,7 +503,7 @@ GBool XRef::readXRefStream(Stream *xrefStr, Guint *pos) { goto err1; } if (newSize > size) { - if (newSize * sizeof(XRefEntry)/sizeof(XRefEntry) != newSize) { + if (newSize * (int)sizeof(XRefEntry)/sizeof(XRefEntry) != newSize) { error(-1, "Invalid 'size' parameter."); return gFalse; } @@ -597,7 +597,7 @@ GBool XRef::readXRefStreamSection(Stream *xrefStr, int *w, int first, int n) { if (newSize < 0) { return gFalse; } - if (newSize*sizeof(XRefEntry)/sizeof(XRefEntry) != newSize) { + if (newSize*(int)sizeof(XRefEntry)/sizeof(XRefEntry) != newSize) { error(-1, "Invalid 'size' inside xref table."); return gFalse; } @@ -736,7 +736,7 @@ GBool XRef::constructXRef() { error(-1, "Bad object number"); return gFalse; } - if (newSize*sizeof(XRefEntry)/sizeof(XRefEntry) != newSize) { + if (newSize*(int)sizeof(XRefEntry)/sizeof(XRefEntry) != newSize) { error(-1, "Invalid 'obj' parameters."); return gFalse; } @@ -763,7 +763,7 @@ GBool XRef::constructXRef() { } else if (!strncmp(p, "endstream", 9)) { if (streamEndsLen == streamEndsSize) { streamEndsSize += 64; - if (streamEndsSize*sizeof(int)/sizeof(int) != streamEndsSize) { + if (streamEndsSize*(int)sizeof(int)/sizeof(int) != streamEndsSize) { error(-1, "Invalid 'endstream' parameter."); return gFalse; } @@ -819,6 +819,9 @@ GBool XRef::checkEncrypted(GString *ownerPassword, GString *userPassword) { } else { keyLength = 5; } + if (keyLength > 16) { + keyLength = 16; + } permFlags = permissions.getInt(); if (encVersion >= 1 && encVersion <= 2 && encRevision >= 2 && encRevision <= 3) {