@@ -62,7 +62,7 @@ main(int argc, char *argv[])
6262enum trivalue prompt_password = TRI_DEFAULT ;
6363bool echo = false;
6464bool interactive = false;
65- char * conn_limit = NULL ;
65+ int conn_limit = -2 ; /* less than minimum valid value */
6666bool pwprompt = false;
6767char * newpassword = NULL ;
6868char newuser_buf [128 ];
@@ -89,6 +89,8 @@ main(int argc, char *argv[])
8989while ((c = getopt_long (argc ,argv ,"h:p:U:g:wWedDsSaArRiIlLc:PE" ,
9090long_options ,& optindex ))!= -1 )
9191{
92+ char * endptr ;
93+
9294switch (c )
9395{
9496case 'h' :
@@ -145,7 +147,14 @@ main(int argc, char *argv[])
145147login = TRI_NO ;
146148break ;
147149case 'c' :
148- conn_limit = pg_strdup (optarg );
150+ conn_limit = strtol (optarg ,& endptr ,10 );
151+ if (* endptr != '\0' || conn_limit < -1 )/* minimum valid value */
152+ {
153+ fprintf (stderr ,
154+ _ ("%s: invalid value for --connection-limit: %s\n" ),
155+ progname ,optarg );
156+ exit (1 );
157+ }
149158break ;
150159case 'P' :
151160pwprompt = true;
@@ -300,8 +309,8 @@ main(int argc, char *argv[])
300309appendPQExpBufferStr (& sql ," REPLICATION" );
301310if (replication == TRI_NO )
302311appendPQExpBufferStr (& sql ," NOREPLICATION" );
303- if (conn_limit != NULL )
304- appendPQExpBuffer (& sql ," CONNECTION LIMIT %s " ,conn_limit );
312+ if (conn_limit >= -1 )
313+ appendPQExpBuffer (& sql ," CONNECTION LIMIT %d " ,conn_limit );
305314if (roles .head != NULL )
306315{
307316SimpleStringListCell * cell ;