Prevent read_rsa_public_key() from returning an uninitialized RSA structure.
In case the config file could not be opened a new but unitialized RSA structure would be returned, causing a segmentation fault later on. This would only happen in the case that the config file could be opened before, but not when read_rsa_public_key() was called. This situation could occur when the --user option was used, and the config files were not readable by the specified user.
This commit is contained in:
parent
0f2aa4bd8b
commit
e838289683
1 changed files with 13 additions and 7 deletions
|
@ -113,11 +113,14 @@ bool read_rsa_public_key(connection_t *c) {
|
||||||
xasprintf(&fname, "%s/hosts/%s", confbase, c->name);
|
xasprintf(&fname, "%s/hosts/%s", confbase, c->name);
|
||||||
fp = fopen(fname, "r");
|
fp = fopen(fname, "r");
|
||||||
|
|
||||||
if(fp) {
|
if(!fp) {
|
||||||
c->rsa_key = PEM_read_RSAPublicKey(fp, &c->rsa_key, NULL, NULL);
|
logger(LOG_ERR, "Error reading RSA public key file `%s': %s", fname, strerror(errno));
|
||||||
fclose(fp);
|
free(fname);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c->rsa_key = PEM_read_RSAPublicKey(fp, &c->rsa_key, NULL, NULL);
|
||||||
|
fclose(fp);
|
||||||
free(fname);
|
free(fname);
|
||||||
|
|
||||||
if(c->rsa_key)
|
if(c->rsa_key)
|
||||||
|
@ -128,12 +131,15 @@ bool read_rsa_public_key(connection_t *c) {
|
||||||
xasprintf(&fname, "%s/hosts/%s", confbase, c->name);
|
xasprintf(&fname, "%s/hosts/%s", confbase, c->name);
|
||||||
fp = fopen(fname, "r");
|
fp = fopen(fname, "r");
|
||||||
|
|
||||||
if(fp) {
|
if(!fp) {
|
||||||
c->rsa_key = PEM_read_RSA_PUBKEY(fp, &c->rsa_key, NULL, NULL);
|
logger(LOG_ERR, "Error reading RSA public key file `%s': %s", fname, strerror(errno));
|
||||||
// RSA_blinding_on(c->rsa_key, NULL);
|
free(fname);
|
||||||
fclose(fp);
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c->rsa_key = PEM_read_RSA_PUBKEY(fp, &c->rsa_key, NULL, NULL);
|
||||||
|
// RSA_blinding_on(c->rsa_key, NULL);
|
||||||
|
fclose(fp);
|
||||||
free(fname);
|
free(fname);
|
||||||
|
|
||||||
if(c->rsa_key)
|
if(c->rsa_key)
|
||||||
|
|
Loading…
Reference in a new issue