@@ -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
@@ -88,6 +88,8 @@ main(int argc, char *argv[])
88
88
while ((c = getopt_long (argc , argv , "h:p:U:g:wWedDsSaArRiIlLc:PEN" ,
89
89
long_options , & optindex )) != -1 )
90
90
{
91
+ char * endptr ;
92
+
91
93
switch (c )
92
94
{
93
95
case 'h' :
@@ -144,7 +146,14 @@ main(int argc, char *argv[])
144
146
login = TRI_NO ;
145
147
break ;
146
148
case 'c' :
147
- conn_limit = pg_strdup (optarg );
149
+ conn_limit = strtol (optarg , & endptr , 10 );
150
+ if (* endptr != '\0' || conn_limit < -1 ) /* minimum valid value */
151
+ {
152
+ fprintf (stderr ,
153
+ _ ("%s: invalid value for --connection-limit: %s\n" ),
154
+ progname , optarg );
155
+ exit (1 );
156
+ }
148
157
break ;
149
158
case 'P' :
150
159
pwprompt = true;
@@ -305,8 +314,8 @@ main(int argc, char *argv[])
305
314
appendPQExpBufferStr (& sql , " REPLICATION" );
306
315
if (replication == TRI_NO )
307
316
appendPQExpBufferStr (& sql , " NOREPLICATION" );
308
- if (conn_limit != NULL )
309
- appendPQExpBuffer (& sql , " CONNECTION LIMIT %s " , conn_limit );
317
+ if (conn_limit >= -1 )
318
+ appendPQExpBuffer (& sql , " CONNECTION LIMIT %d " , conn_limit );
310
319
if (roles .head != NULL )
311
320
{
312
321
SimpleStringListCell * cell ;
0 commit comments