@@ -63,7 +63,7 @@ main(int argc, char *argv[])
63
63
enum trivalue prompt_password = TRI_DEFAULT ;
64
64
bool echo = false;
65
65
bool interactive = false;
66
- char * conn_limit = NULL ;
66
+ int conn_limit = -2 ; /* less than minimum valid value */
67
67
bool pwprompt = false;
68
68
char * newpassword = NULL ;
69
69
char newuser_buf [128 ];
@@ -91,6 +91,8 @@ main(int argc, char *argv[])
91
91
while ((c = getopt_long (argc , argv , "h:p:U:g:wWedDsSaArRiIlLc:PE" ,
92
92
long_options , & optindex )) != -1 )
93
93
{
94
+ char * endptr ;
95
+
94
96
switch (c )
95
97
{
96
98
case 'h' :
@@ -147,7 +149,14 @@ main(int argc, char *argv[])
147
149
login = TRI_NO ;
148
150
break ;
149
151
case 'c' :
150
- conn_limit = pg_strdup (optarg );
152
+ conn_limit = strtol (optarg , & endptr , 10 );
153
+ if (* endptr != '\0' || conn_limit < -1 ) /* minimum valid value */
154
+ {
155
+ fprintf (stderr ,
156
+ _ ("%s: invalid value for --connection-limit: %s\n" ),
157
+ progname , optarg );
158
+ exit (1 );
159
+ }
151
160
break ;
152
161
case 'P' :
153
162
pwprompt = true;
@@ -302,8 +311,8 @@ main(int argc, char *argv[])
302
311
appendPQExpBufferStr (& sql , " REPLICATION" );
303
312
if (replication == TRI_NO )
304
313
appendPQExpBufferStr (& sql , " NOREPLICATION" );
305
- if (conn_limit != NULL )
306
- appendPQExpBuffer (& sql , " CONNECTION LIMIT %s " , conn_limit );
314
+ if (conn_limit >= -1 )
315
+ appendPQExpBuffer (& sql , " CONNECTION LIMIT %d " , conn_limit );
307
316
if (roles .head != NULL )
308
317
{
309
318
SimpleStringListCell * cell ;
0 commit comments