From a6a95d4f382b67bc80b63e4769dfb240bafd9aa7 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Wed, 23 Oct 2019 11:34:42 +0900 Subject: [PATCH] Fix thinkos from 4f4061b for libpq integer parsing A check was redundant. While on it, add an assertion to make sure that the parsing routine is never called with a NULL input. All the code paths currently calling the parsing routine are careful with NULL inputs already, but future callers may forget that. Reported-by: Peter Eisentraut, Lars Kanis Discussion: https://postgr.es/m/ec64956b-4597-56b6-c3db-457d15250fe4@2ndquadrant.com Backpatch-through: 12 --- src/interfaces/libpq/fe-connect.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 9088c4cbce..84765a79fe 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -1663,6 +1663,8 @@ parse_int_param(const char *value, int *result, PGconn *conn, char *end; long numval; + Assert(value != NULL); + *result = 0; /* strtol(3) skips leading whitespaces */ @@ -1680,10 +1682,10 @@ parse_int_param(const char *value, int *result, PGconn *conn, * Skip any trailing whitespace; if anything but whitespace remains before * the terminating character, fail */ - while (*end && *end != '\0' && isspace((unsigned char) *end)) + while (*end != '\0' && isspace((unsigned char) *end)) end++; - if (*end && *end != '\0') + if (*end != '\0') goto error; *result = numval; -- 2.40.0