X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Ftincd.c;h=c731e1d3c79fdeda0374c8d36790ca5efdd6f40e;hp=84ce0d45e4c41d9eafad5a2402c5c5406f3fd360;hb=985d19caf20058db3c764f0f6fbeafa8bcc59fcc;hpb=b63280f52f997466f0a8bb70f89a3b705b2eb015 diff --git a/src/tincd.c b/src/tincd.c index 84ce0d45..c731e1d3 100644 --- a/src/tincd.c +++ b/src/tincd.c @@ -413,15 +413,18 @@ static bool keygen(int bits) { if(!result) { fprintf(stderr, "Error during key generation!\n"); + RSA_free(rsa_key); return false; } else fprintf(stderr, "Done.\n"); - snprintf(filename, sizeof filename, "%s/rsa_key.priv", confbase); + snprintf(filename, sizeof(filename), "%s/rsa_key.priv", confbase); f = ask_and_open(filename, "private RSA key"); - if(!f) + if(!f) { + RSA_free(rsa_key); return false; + } #ifdef HAVE_FCHMOD /* Make it unreadable for others. */ @@ -435,21 +438,25 @@ static bool keygen(int bits) { char *name = get_name(); if(name) { - snprintf(filename, sizeof filename, "%s/hosts/%s", confbase, name); + snprintf(filename, sizeof(filename), "%s/hosts/%s", confbase, name); free(name); } else { - snprintf(filename, sizeof filename, "%s/rsa_key.pub", confbase); + snprintf(filename, sizeof(filename), "%s/rsa_key.pub", confbase); } f = ask_and_open(filename, "public RSA key"); - if(!f) + if(!f) { + RSA_free(rsa_key); return false; + } fputc('\n', f); PEM_write_RSAPublicKey(f, rsa_key); fclose(f); + RSA_free(rsa_key); + return true; } @@ -536,7 +543,7 @@ static bool drop_privs() { "initgroups", strerror(errno)); return false; } -#ifndef __ANDROID__ +#ifndef ANDROID // Not supported in android NDK endgrent(); endpwent(); @@ -737,7 +744,7 @@ end: ERR_free_strings(); exit_configuration(&config_tree); - list_free(cmdline_conf); + list_delete_list(cmdline_conf); free_names(); return status;