Fix compiling with OpenSSL < 1.1.0.
[tinc] / src / openssl / rsagen.c
index 4a47619..b7eb629 100644 (file)
@@ -27,6 +27,7 @@ typedef RSA rsa_t;
 
 #include "../logger.h"
 #include "../rsagen.h"
+#include "../xalloc.h"
 
 /* This function prettyprints the key generation process */
 
@@ -89,11 +90,17 @@ rsa_t *rsa_generate(size_t bits, unsigned long exponent) {
        BN_set_word(bn_e, exponent);
        BN_GENCB_set(cb, indicator, NULL);
 
-       RSA_generate_key_ex(rsa, bits, bn_e, cb);
+       int result = RSA_generate_key_ex(rsa, bits, bn_e, cb);
 
        BN_GENCB_free(cb);
        BN_free(bn_e);
 
+       if(!result) {
+               fprintf(stderr, "Error during key generation!\n");
+               RSA_free(rsa);
+               return NULL;
+       }
+
        return rsa;
 }