]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/packages/gpdf/files/015-CAN-2005-0064.patch
gpdf: add 2.10.0-4 from Debian.
[familiar-h63xx-build.git] / org.handhelds.familiar / packages / gpdf / files / 015-CAN-2005-0064.patch
1 --- gpdf-2.8.2.orig/xpdf/Decrypt.cc
2 +++ gpdf-2.8.2/xpdf/Decrypt.cc
3 @@ -73,6 +73,11 @@
4    Guchar fx, fy;
5    int len, i, j;
6  
7 +  // check whether we have non-zero keyLength
8 +  if ( !keyLength ) {
9 +    return gFalse;
10 +  }
11 +
12    // try using the supplied owner password to generate the user password
13    *ownerPasswordOk = gFalse;
14    if (ownerPassword) {
15 @@ -98,7 +103,7 @@
16      } else {
17        memcpy(test2, ownerKey->getCString(), 32);
18        for (i = 19; i >= 0; --i) {
19 -       for (j = 0; j < keyLength; ++j) {
20 +       for (j = 0; j < keyLength && j < 16; ++j) {
21           tmpKey[j] = test[j] ^ i;
22         }
23         rc4InitKey(tmpKey, keyLength, fState);
24 @@ -135,6 +140,11 @@
25    int len, i, j;
26    GBool ok;
27  
28 +  // check whether we have non-zero keyLength
29 +  if ( !keyLength ) {
30 +    return gFalse;
31 +  }
32 +
33    // generate file key
34    buf = (Guchar *)gmalloc(68 + fileID->getLength());
35    if (userPassword) {
36 @@ -172,7 +182,7 @@
37    } else if (encRevision == 3) {
38      memcpy(test, userKey->getCString(), 32);
39      for (i = 19; i >= 0; --i) {
40 -      for (j = 0; j < keyLength; ++j) {
41 +      for (j = 0; j < keyLength && j < 16; ++j) {
42         tmpKey[j] = fileKey[j] ^ i;
43        }
44        rc4InitKey(tmpKey, keyLength, fState);