Extend the private key stat checking error handling

If the stat operation on the private key failed, the code assumed it
was due to an ENOENT, which may or may not be true. Extend the check
by printing a different error message on non-ENOENT errors for easier
debugging.

Per suggestion by Tom Lane due to an issue with the fairywren animal
in the buildfarm.

Discussion: https://postgr.es/m/1632478.1638305700@sss.pgh.pa.us
This commit is contained in:
Daniel Gustafsson 2021-11-30 23:23:57 +01:00
parent b637101644
commit 538724fc36
1 changed files with 8 additions and 3 deletions

View File

@ -1235,9 +1235,14 @@ initialize_SSL(PGconn *conn)
if (stat(fnbuf, &buf) != 0)
{
appendPQExpBuffer(&conn->errorMessage,
libpq_gettext("certificate present, but not private key file \"%s\"\n"),
fnbuf);
if (errno == ENOENT)
appendPQExpBuffer(&conn->errorMessage,
libpq_gettext("certificate present, but not private key file \"%s\"\n"),
fnbuf);
else
appendPQExpBuffer(&conn->errorMessage,
libpq_gettext("could not stat private key file \"%s\": %m\n"),
fnbuf);
return -1;
}
#ifndef WIN32