]> www.fi.muni.cz Git - evince.git/blobdiff - pdf/xpdf/XRef.cc
Fixup selection offset calculation
[evince.git] / pdf / xpdf / XRef.cc
index afb787d43c8e10dccdb83f3ad84a3c905c63aa2d..5be2017842d4b6fa5a2bf61e469087ed0ea12c3a 100644 (file)
@@ -110,7 +110,7 @@ ObjectStream::ObjectStream(XRef *xref, int objStrNumA) {
     goto err1;
   }
 
     goto err1;
   }
 
-  if (nObjects*sizeof(int)/sizeof(int) != nObjects) {
+  if (nObjects*(int)sizeof(int)/sizeof(int) != nObjects) {
     error(-1, "Invalid 'nObjects'");
     goto err1;
   }
     error(-1, "Invalid 'nObjects'");
     goto err1;
   }
@@ -393,7 +393,7 @@ GBool XRef::readXRefTable(Parser *parser, Guint *pos) {
       if (newSize < 0) {
        goto err1;
       }
       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;
       }
         error(-1, "Invalid 'obj' parameters'");
         goto err1;
       }
@@ -503,7 +503,7 @@ GBool XRef::readXRefStream(Stream *xrefStr, Guint *pos) {
     goto err1;
   }
   if (newSize > size) {
     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;
     }
       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 < 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;
     }
       error(-1, "Invalid 'size' inside xref table.");
       return gFalse;
     }
@@ -736,7 +736,7 @@ GBool XRef::constructXRef() {
                    error(-1, "Bad object number");
                    return gFalse;
                  }
                    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;
                   }
                     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;
     } 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;
         }
           error(-1, "Invalid 'endstream' parameter.");
           return gFalse;
         }
@@ -819,6 +819,9 @@ GBool XRef::checkEncrypted(GString *ownerPassword, GString *userPassword) {
        } else {
          keyLength = 5;
        }
        } else {
          keyLength = 5;
        }
+       if (keyLength > 16) {
+         keyLength = 16;
+       }
        permFlags = permissions.getInt();
        if (encVersion >= 1 && encVersion <= 2 &&
            encRevision >= 2 && encRevision <= 3) {
        permFlags = permissions.getInt();
        if (encVersion >= 1 && encVersion <= 2 &&
            encRevision >= 2 && encRevision <= 3) {