X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fkeys.c;h=84bd07198e4de0f71a03fd2428a1d6062a6ac4e0;hb=3d787920d51a35e74e442c7265be3b13b69ad8e4;hp=0485c761330119ac0975073ceb9c6c58e711eecb;hpb=373b0c12d9d0e8a3b449fd18be704e28dd6403e1;p=tinc diff --git a/src/keys.c b/src/keys.c index 0485c761..84bd0719 100644 --- a/src/keys.c +++ b/src/keys.c @@ -134,6 +134,7 @@ ecdsa_t *read_ecdsa_private_key(splay_tree_t *config_tree, char **keyfile) { if(fstat(fileno(fp), &s)) { logger(DEBUG_ALWAYS, LOG_ERR, "Could not stat Ed25519 private key file `%s': %s'", fname, strerror(errno)); free(fname); + fclose(fp); return false; } @@ -227,13 +228,13 @@ rsa_t *read_rsa_private_key(splay_tree_t *config_tree, char **keyfile) { if(get_config_string(rsa_priv_conf, &d)) { if(!get_config_string(lookup_config(config_tree, "PublicKey"), &n)) { logger(DEBUG_ALWAYS, LOG_ERR, "PrivateKey used but no PublicKey found!"); - free(d); + free_string(d); return NULL; } key = rsa_set_hex_private_key(n, "FFFF", d); free(n); - free(d); + free_string(d); if(key && keyfile && rsa_priv_conf->file) { *keyfile = xstrdup(rsa_priv_conf->file); @@ -268,6 +269,7 @@ rsa_t *read_rsa_private_key(splay_tree_t *config_tree, char **keyfile) { if(fstat(fileno(fp), &s)) { logger(DEBUG_ALWAYS, LOG_ERR, "Could not stat RSA private key file `%s': %s'", fname, strerror(errno)); free(fname); + fclose(fp); return NULL; } @@ -295,7 +297,7 @@ rsa_t *read_rsa_private_key(splay_tree_t *config_tree, char **keyfile) { return key; } -bool read_rsa_public_key(rsa_t **rsa, splay_tree_t *config_tree, const char *name) { +rsa_t *read_rsa_public_key(splay_tree_t *config_tree, const char *name) { FILE *fp; char *fname; char *n; @@ -303,9 +305,9 @@ bool read_rsa_public_key(rsa_t **rsa, splay_tree_t *config_tree, const char *nam /* First, check for simple PublicKey statement */ if(get_config_string(lookup_config(config_tree, "PublicKey"), &n)) { - *rsa = rsa_set_hex_public_key(n, "FFFF"); + rsa_t *rsa = rsa_set_hex_public_key(n, "FFFF"); free(n); - return *rsa != NULL; + return rsa; } /* Else, check for PublicKeyFile statement and read it */ @@ -322,15 +324,15 @@ bool read_rsa_public_key(rsa_t **rsa, splay_tree_t *config_tree, const char *nam return false; } - *rsa = rsa_read_pem_public_key(fp); + rsa_t *rsa = rsa_read_pem_public_key(fp); fclose(fp); - if(!*rsa) { + if(!rsa) { logger(DEBUG_ALWAYS, LOG_ERR, "Reading RSA public key file `%s' failed: %s", fname, strerror(errno)); } free(fname); - return *rsa != NULL; + return rsa; } #endif