Initialize num properly.
[openssl.git] / apps / dhparam.c
index e3cabcfcdccd4e4598380c476bad58bb3a35bfaa..f5d7126af7a5d16bedbcb9dc9713f9212e56c189 100644 (file)
  *
  */
 
+#include <openssl/opensslconf.h>       /* for OPENSSL_NO_DH */
 #ifndef OPENSSL_NO_DH
 #include <stdio.h>
 #include <stdlib.h>
@@ -148,9 +149,6 @@ int MAIN(int, char **);
 
 int MAIN(int argc, char **argv)
        {
-#ifndef OPENSSL_NO_ENGINE
-       ENGINE *e = NULL;
-#endif
        DH *dh=NULL;
        int i,badops=0,text=0;
 #ifndef OPENSSL_NO_DSA
@@ -269,7 +267,7 @@ bad:
        ERR_load_crypto_strings();
 
 #ifndef OPENSSL_NO_ENGINE
-        e = setup_engine(bio_err, engine, 0);
+        setup_engine(bio_err, engine, 0);
 #endif
 
        if (g && !num)
@@ -334,7 +332,6 @@ bad:
                        BIO_printf(bio_err,"This is going to take a long time\n");
                        if(!dh || !DH_generate_parameters_ex(dh, num, g, &cb))
                                {
-                               if(dh) DH_free(dh);
                                ERR_print_errors(bio_err);
                                goto end;
                                }
@@ -515,7 +512,12 @@ bad:
                if      (outformat == FORMAT_ASN1)
                        i=i2d_DHparams_bio(out,dh);
                else if (outformat == FORMAT_PEM)
-                       i=PEM_write_bio_DHparams(out,dh);
+                       {
+                       if (dh->q)
+                               i=PEM_write_bio_DHxparams(out,dh);
+                       else
+                               i=PEM_write_bio_DHparams(out,dh);
+                       }
                else    {
                        BIO_printf(bio_err,"bad output format specified for outfile\n");
                        goto end;
@@ -553,4 +555,10 @@ static int MS_CALLBACK dh_cb(int p, int n, BN_GENCB *cb)
        return 1;
        }
 
+#else /* !OPENSSL_NO_DH */
+
+# if PEDANTIC
+static void *dummy=&dummy;
+# endif
+
 #endif