]> granicus.if.org Git - postgresql/commitdiff
Teach the configure script to validate its --with-pgport argument.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 14 Mar 2016 14:41:29 +0000 (10:41 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 14 Mar 2016 14:41:29 +0000 (10:41 -0400)
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

configure
configure.in

index 0e51ac70ed9381fea16a2fd675f2ea95e99d8f5f..08cff2357e3875a814c06aa5db923dffb24306be 100755 (executable)
--- 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
 #
index 0bd90d7501952334342b15cc025b09ff200e6ea3..0b7dd97506a5fe435895b559d1cc311ff94fbca9 100644 (file)
@@ -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
 #