@@ -62,7 +62,7 @@ main(int argc, char *argv[])
62
62
enum trivalue prompt_password = TRI_DEFAULT ;
63
63
bool echo = false;
64
64
bool interactive = false;
65
- char * conn_limit = NULL ;
65
+ int conn_limit = -2 ; /* less than minimum valid value */
66
66
bool pwprompt = false;
67
67
char * newpassword = NULL ;
68
68
char newuser_buf [128 ];
@@ -89,6 +89,8 @@ main(int argc, char *argv[])
89
89
while ((c = getopt_long (argc ,argv ,"h:p:U:g:wWedDsSaArRiIlLc:PE" ,
90
90
long_options ,& optindex ))!= -1 )
91
91
{
92
+ char * endptr ;
93
+
92
94
switch (c )
93
95
{
94
96
case 'h' :
@@ -145,7 +147,14 @@ main(int argc, char *argv[])
145
147
login = TRI_NO ;
146
148
break ;
147
149
case '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
+ }
149
158
break ;
150
159
case 'P' :
151
160
pwprompt = true;
@@ -300,8 +309,8 @@ main(int argc, char *argv[])
300
309
appendPQExpBufferStr (& sql ," REPLICATION" );
301
310
if (replication == TRI_NO )
302
311
appendPQExpBufferStr (& 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 );
305
314
if (roles .head != NULL )
306
315
{
307
316
SimpleStringListCell * cell ;