From a6a95d4f382b67bc80b63e4769dfb240bafd9aa7 Mon Sep 17 00:00:00 2001
From: Michael Paquier <michael@paquier.xyz>
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 9088c4cbce7..84765a79fee 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;
-- 
GitLab