Skip to content

Commit 482ed83

Browse files
committed
Check SSL_get_error() value SSL_ERROR_SYSCALL to see if SSL_read()
returned -1, per SSL_get_error() documentation. Nathan Mueller
1 parent 5587f07 commit 482ed83

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

src/backend/libpq/be-secure.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
*
1212
*
1313
* IDENTIFICATION
14-
* $Header: /cvsroot/pgsql/src/backend/libpq/be-secure.c,v 1.16 2002/11/07 18:45:51 tgl Exp $
14+
* $Header: /cvsroot/pgsql/src/backend/libpq/be-secure.c,v 1.17 2002/12/12 22:42:39 momjian Exp $
1515
*
1616
* Since the server static private key ($DataDir/server.key)
1717
* will normally be stored unencrypted so that the database
@@ -288,7 +288,10 @@ secure_read(Port *port, void *ptr, size_t len)
288288
case SSL_ERROR_WANT_READ:
289289
break;
290290
case SSL_ERROR_SYSCALL:
291-
elog(ERROR, "SSL SYSCALL error: %s", strerror(errno));
291+
if (n == -1)
292+
elog(ERROR, "SSL SYSCALL error: %s", strerror(errno));
293+
else
294+
strerror(errno));
292295
break;
293296
case SSL_ERROR_SSL:
294297
elog(ERROR, "SSL error: %s", SSLerrmessage());
@@ -337,7 +340,10 @@ secure_write(Port *port, const void *ptr, size_t len)
337340
case SSL_ERROR_WANT_WRITE:
338341
break;
339342
case SSL_ERROR_SYSCALL:
340-
elog(ERROR, "SSL SYSCALL error: %s", strerror(errno));
343+
if (n == -1)
344+
elog(ERROR, "SSL SYSCALL error: %s", strerror(errno));
345+
else
346+
strerror(errno));
341347
break;
342348
case SSL_ERROR_SSL:
343349
elog(ERROR, "SSL error: %s", SSLerrmessage());

src/interfaces/libpq/fe-secure.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
*
1212
*
1313
* IDENTIFICATION
14-
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-secure.c,v 1.16 2002/11/07 18:45:51 tgl Exp $
14+
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-secure.c,v 1.17 2002/12/12 22:42:39 momjian Exp $
1515
*
1616
* NOTES
1717
* The client *requires* a valid server certificate. Since
@@ -270,7 +270,8 @@ pqsecure_read(PGconn *conn, void *ptr, size_t len)
270270
case SSL_ERROR_WANT_READ:
271271
break;
272272
case SSL_ERROR_SYSCALL:
273-
printfPQExpBuffer(&conn->errorMessage,
273+
if (n == -1)
274+
printfPQExpBuffer(&conn->errorMessage,
274275
libpq_gettext("SSL SYSCALL error: %s\n"),
275276
SOCK_STRERROR(SOCK_ERRNO));
276277
break;
@@ -315,7 +316,8 @@ pqsecure_write(PGconn *conn, const void *ptr, size_t len)
315316
case SSL_ERROR_WANT_WRITE:
316317
break;
317318
case SSL_ERROR_SYSCALL:
318-
printfPQExpBuffer(&conn->errorMessage,
319+
if (n == -1)
320+
printfPQExpBuffer(&conn->errorMessage,
319321
libpq_gettext("SSL SYSCALL error: %s\n"),
320322
SOCK_STRERROR(SOCK_ERRNO));
321323
break;

0 commit comments

Comments
 (0)