]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Bug #5170 - also simplify i2d_DHparams
authorMarek Majkowski <marek@popcount.org>
Thu, 6 Jun 2013 11:13:24 +0000 (12:13 +0100)
committerMarek Majkowski <marek@popcount.org>
Thu, 6 Jun 2013 11:13:24 +0000 (12:13 +0100)
src/common/crypto.c

index 40e15bb37e5c273d87be4ccf33af4c14db7b34d7..adbf6396d021f80a4ec0b2eef855fbe6cf74b7e9 100644 (file)
@@ -1688,7 +1688,7 @@ crypto_store_dynamic_dh_modulus(const char *fname)
 {
   int len, new_len;
   DH *dh = NULL;
-  unsigned char *dh_string_repr = NULL, *cp = NULL;
+  unsigned char *dh_string_repr = NULL;
   char *base64_encoded_dh = NULL;
   char *file_string = NULL;
   int retval = -1;
@@ -1712,15 +1712,8 @@ crypto_store_dynamic_dh_modulus(const char *fname)
   if (!BN_set_word(dh->g, DH_GENERATOR))
     goto done;
 
-  len = i2d_DHparams(dh, NULL);
-  if (len < 0) {
-    log_warn(LD_CRYPTO, "Error occured while DER encoding DH modulus (1).");
-    goto done;
-  }
-
-  cp = dh_string_repr = tor_malloc_zero(len+1);
-  len = i2d_DHparams(dh, &cp);
-  if ((len < 0) || ((cp - dh_string_repr) != len)) {
+  len = i2d_DHparams(dh, &dh_string_repr);
+  if ((len < 0) || (dh_string_repr == NULL)) {
     log_warn(LD_CRYPTO, "Error occured while DER encoding DH modulus (2).");
     goto done;
   }
@@ -1747,7 +1740,7 @@ crypto_store_dynamic_dh_modulus(const char *fname)
  done:
   if (dh)
     DH_free(dh);
-  tor_free(dh_string_repr);
+  OPENSSL_free(dh_string_repr);
   tor_free(base64_encoded_dh);
   tor_free(file_string);