From: Tom Lane Date: Mon, 14 Mar 2016 14:41:29 +0000 (-0400) Subject: Teach the configure script to validate its --with-pgport argument. X-Git-Tag: REL9_6_BETA1~500 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bf53d5c208a3bdce243a38666fc50f5418c78c3b;p=postgresql Teach the configure script to validate its --with-pgport argument. Previously, configure would take any string, including an empty string, leading to obscure compile failures in guc.c. It seems worth expending a few lines of code to ensure that the argument is a decimal number between 1 and 65535. Report and patch by Jim Nasby; reviews by Alex Shulgin, Peter Eisentraut, Ivan Kartyshov --- diff --git a/configure b/configure index 0e51ac70ed..08cff2357e 100755 --- a/configure +++ b/configure @@ -3100,6 +3100,17 @@ _ACEOF +# It's worth validating port; you can get very confusing errors otherwise +if test x"$default_port" = x""; then + as_fn_error $? "invalid --with-pgport specification: empty string" "$LINENO" 5 +elif test ! x`echo "$default_port" | sed -e 's/[0-9]*//'` = x""; then + as_fn_error $? "invalid --with-pgport specification: must be a number" "$LINENO" 5 +elif test ! x`echo "$default_port" | sed -e 's/^0.//'` = x"$default_port"; then + as_fn_error $? "invalid --with-pgport specification: must not have leading 0" "$LINENO" 5 +elif test "$default_port" -lt "1" -o "$default_port" -gt "65535"; then + as_fn_error $? "invalid --with-pgport specification: must be between 1 and 65535" "$LINENO" 5 +fi + # # '-rpath'-like feature can be disabled # diff --git a/configure.in b/configure.in index 0bd90d7501..0b7dd97506 100644 --- a/configure.in +++ b/configure.in @@ -165,6 +165,17 @@ AC_DEFINE_UNQUOTED(DEF_PGPORT_STR, "${default_port}", [Define to the default TCP port number as a string constant.]) AC_SUBST(default_port) +# It's worth validating port; you can get very confusing errors otherwise +if test x"$default_port" = x""; then + AC_MSG_ERROR([invalid --with-pgport specification: empty string]) +elif test ! x`echo "$default_port" | sed -e 's/[[0-9]]*//'` = x""; then + AC_MSG_ERROR([invalid --with-pgport specification: must be a number]) +elif test ! x`echo "$default_port" | sed -e 's/^0.//'` = x"$default_port"; then + AC_MSG_ERROR([invalid --with-pgport specification: must not have leading 0]) +elif test "$default_port" -lt "1" -o "$default_port" -gt "65535"; then + AC_MSG_ERROR([invalid --with-pgport specification: must be between 1 and 65535]) +fi + # # '-rpath'-like feature can be disabled #