Make libpq reject non-numeric and out-of-range port numbers with a suitable

error message, rather than blundering on and failing with something opaque.

Sam Mason
This commit is contained in:
Tom Lane 2009-09-27 03:43:10 +00:00
parent 799ac99201
commit 61be11ff08
1 changed files with 10 additions and 1 deletions

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.376 2009/07/24 17:58:31 tgl Exp $
* $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.377 2009/09/27 03:43:10 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -817,7 +817,16 @@ connectDBStart(PGconn *conn)
/* Set up port number as a string */
if (conn->pgport != NULL && conn->pgport[0] != '\0')
{
portnum = atoi(conn->pgport);
if (portnum < 1 || portnum > 65535)
{
appendPQExpBuffer(&conn->errorMessage,
libpq_gettext("invalid port number: \"%s\"\n"),
conn->pgport);
goto connect_errReturn;
}
}
else
portnum = DEF_PGPORT;
snprintf(portstr, sizeof(portstr), "%d", portnum);