(encode_session_key): Changed the zero random byte
authorWerner Koch <wk@gnupg.org>
Thu, 19 Aug 2004 10:12:54 +0000 (10:12 +0000)
committerWerner Koch <wk@gnupg.org>
Thu, 19 Aug 2004 10:12:54 +0000 (10:12 +0000)
substituting code to actually do clever things.  Thanks to
Matthias Urlichs for noting the implementation problem.

g10/ChangeLog
g10/seskey.c

index 8ee9312..5653bf6 100644 (file)
@@ -1,3 +1,9 @@
+2004-08-19  Werner Koch  <wk@g10code.de>
+
+       * seskey.c (encode_session_key): Changed the zero random byte
+       substituting code to actually do clever things.  Thanks to
+       Matthias Urlichs for noting the implementation problem.
+
 2004-08-18  Marcus Brinkmann  <marcus@g10code.de>
 
        * passphrase.c (agent_get_passphrase): Fix detection of gpg-agent
index 664508b..cc58154 100644 (file)
@@ -117,11 +117,14 @@ encode_session_key( DEK *dek, unsigned nbits )
                k++;
        if( !k )
            break; /* okay: no zero bytes */
-       k += k/128; /* better get some more */
+       k += k/128 + 3; /* better get some more */
        pp = get_random_bits( k*8, 1, 1);
-       for(j=0; j < i && k ; j++ )
+       for(j=0; j < i && k ;) {
            if( !p[j] )
                p[j] = pp[--k];
+            if (p[j])
+              j++;
+        }
        m_free(pp);
     }
     memcpy( frame+n, p, i );