@@ -60,7 +60,7 @@ main(int argc, char *argv[])
6060enum trivalue prompt_password = TRI_DEFAULT ;
6161bool echo = false;
6262bool interactive = false;
63- char * conn_limit = NULL ;
63+ int conn_limit = -2 ; /* less than minimum valid value */
6464bool pwprompt = false;
6565char * newpassword = NULL ;
6666char newuser_buf [128 ];
@@ -88,6 +88,8 @@ main(int argc, char *argv[])
8888while ((c = getopt_long (argc ,argv ,"h:p:U:g:wWedDsSrRiIlLc:PE" ,
8989long_options ,& optindex ))!= -1 )
9090{
91+ char * endptr ;
92+
9193switch (c )
9294{
9395case 'h' :
@@ -142,7 +144,14 @@ main(int argc, char *argv[])
142144login = TRI_NO ;
143145break ;
144146case 'c' :
145- conn_limit = pg_strdup (optarg );
147+ conn_limit = strtol (optarg ,& endptr ,10 );
148+ if (* endptr != '\0' || conn_limit < -1 )/* minimum valid value */
149+ {
150+ fprintf (stderr ,
151+ _ ("%s: invalid value for --connection-limit: %s\n" ),
152+ progname ,optarg );
153+ exit (1 );
154+ }
146155break ;
147156case 'P' :
148157pwprompt = true;
@@ -297,8 +306,8 @@ main(int argc, char *argv[])
297306appendPQExpBufferStr (& sql ," REPLICATION" );
298307if (replication == TRI_NO )
299308appendPQExpBufferStr (& sql ," NOREPLICATION" );
300- if (conn_limit != NULL )
301- appendPQExpBuffer (& sql ," CONNECTION LIMIT %s " ,conn_limit );
309+ if (conn_limit >= -1 )
310+ appendPQExpBuffer (& sql ," CONNECTION LIMIT %d " ,conn_limit );
302311if (roles .head != NULL )
303312{
304313SimpleStringListCell * cell ;