char *name = NULL;
char *filename;
+ get_config_string(lookup_config(config_tree, "Name"), &name);
+
+ if(name) {
+ if(!check_id(name)) {
+ fprintf(stderr, _("Invalid name for myself!\n"));
+ return false;
+ }
+ asprintf(&filename, "%s/hosts/%s", confbase, name);
+ free(name);
+ } else
+ asprintf(&filename, "%s/rsa_key.pub", confbase);
+
fprintf(stderr, _("Generating %d bits keys:\n"), bits);
rsa_key = RSA_generate_key(bits, 0x10001, indicator, NULL);
fclose(f);
free(filename);
- get_config_string(lookup_config(config_tree, "Name"), &name);
-
- if(name)
- asprintf(&filename, "%s/hosts/%s", confbase, name);
- else
- asprintf(&filename, "%s/rsa_key.pub", confbase);
-
f = ask_and_open(filename, _("public RSA key"), "a");
if(!f)
}
}
+static void free_names() {
+ if (identname) free(identname);
+ if (netname) free(netname);
+ if (pidfilename) free(pidfilename);
+ if (logfilename) free(logfilename);
+ if (confbase) free(confbase);
+}
+
int main(int argc, char **argv)
{
program_name = argv[0];
/* Shutdown properly. */
- close_network_connections();
-
ifdebug(CONNECTIONS)
dump_device_stats();
+ close_network_connections();
+
end:
logger(LOG_NOTICE, _("Terminating"));
#endif
EVP_cleanup();
+ ENGINE_cleanup();
+ CRYPTO_cleanup_all_ex_data();
+ ERR_remove_state(0);
+ ERR_free_strings();
+
+ exit_configuration(&config_tree);
+ free_names();
return status;
}