Check the return values from BN_hex2bn() and RAND_load_file().
[tinc] / src / tincd.c
index 279c872..9253d9f 100644 (file)
@@ -1,7 +1,7 @@
 /*
     tincd.c -- the main file for tincd
     Copyright (C) 1998-2005 Ivo Timmermans
-                  2000-2017 Guus Sliepen <guus@tinc-vpn.org>
+                  2000-2018 Guus Sliepen <guus@tinc-vpn.org>
                   2008      Max Rijevski <maksuf@gmail.com>
                   2009      Michael Tokarev <mjt@tls.msk.ru>
                   2010      Julien Muchembled <jm@jmuchemb.eu>
@@ -434,7 +434,10 @@ static bool keygen(int bits) {
        BN_GENCB_set(cb, indicator, NULL);
 
        rsa_key = RSA_new();
-       BN_hex2bn(&e, "10001");
+
+       if(BN_hex2bn(&e, "10001") == 0) {
+               abort();
+       }
 
        if(!rsa_key || !e) {
                abort();
@@ -662,7 +665,7 @@ int main(int argc, char **argv) {
 
        if(show_version) {
                printf("%s version %s\n", PACKAGE, VERSION);
-               printf("Copyright (C) 1998-2017 Ivo Timmermans, Guus Sliepen and others.\n"
+               printf("Copyright (C) 1998-2018 Ivo Timmermans, Guus Sliepen and others.\n"
                       "See the AUTHORS file for a complete list.\n\n"
                       "tinc comes with ABSOLUTELY NO WARRANTY.  This is free software,\n"
                       "and you are welcome to redistribute it under certain conditions;\n"
@@ -698,7 +701,10 @@ int main(int argc, char **argv) {
 
        /* Slllluuuuuuurrrrp! */
 
-       RAND_load_file("/dev/urandom", 1024);
+       if(RAND_load_file("/dev/urandom", 1024) != 1024) {
+               logger(LOG_ERR, "Error initializing RNG!");
+               return 1;
+       }
 
        ENGINE_load_builtin_engines();
        ENGINE_register_all_complete();