]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Fixed some bugs. Patch by Brieuc Jeunhomme <bbp@via.ecp.fr>.
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Tue, 10 Feb 2004 19:40:05 +0000 (19:40 +0000)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Tue, 10 Feb 2004 19:40:05 +0000 (19:40 +0000)
lib/gnutls_dh_primes.c

index 6bbd179b8aa9ce94085a2bbda3bf81186a8a94b6..4fdf442b8dd0f1136b05c0d5897d7e1d8caf2939 100644 (file)
@@ -69,19 +69,27 @@ int _gnutls_dh_generate_prime(GNUTLS_MPI * ret_g, GNUTLS_MPI * ret_n,
        int result, times = 0, qbits;
        GNUTLS_MPI *factors = NULL;
        
+        /* useless since gcry_prime_group_generator allocates its own MPI
+         * fixed by BBP */
+#if 0
        g = mpi_new(16);        /* this should be ok */
        if (g == NULL) {
                gnutls_assert();
                result = GNUTLS_E_MEMORY_ERROR;
                goto cleanup;
        }
+#endif
 
+        /* useless + memleak since gcry_prime_generate allocates irs own prime
+         * fixed by BBP */
+#if 0
        prime = mpi_new(32);
        if (prime == NULL) {
                gnutls_assert();
                result = GNUTLS_E_MEMORY_ERROR;
                goto cleanup;
        }       
+#endif
 
        /* Calculate the size of a prime factor of (prime-1)/2.
         * This is a bad emulation of Michael Wiener's table
@@ -97,6 +105,12 @@ int _gnutls_dh_generate_prime(GNUTLS_MPI * ret_g, GNUTLS_MPI * ret_n,
        /* find a prime number of size bits.
         */
        do {
+                /* fixed by BBP */
+                if (times) {
+                       _gnutls_mpi_release(&prime);
+                       gcry_prime_release_factors (factors);
+                }
+
                err = gcry_prime_generate( &prime, bits, qbits,
                        &factors, NULL, NULL, GCRY_STRONG_RANDOM,
                        GCRY_PRIME_FLAG_SPECIAL_FACTOR);