Skip to content

Commit 8fa8e01

Browse files
committed
createuser: fix parsing of --connection-limit argument
The original coding failed to quote the argument properly. Reported-by: Daniel Gustafsson Discussion: 1B8AE66C-85AB-4728-9BB4-612E8E61C219@yesql.se
1 parent b048f55 commit 8fa8e01

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

src/bin/scripts/createuser.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ main(int argc, char *argv[])
6060
enum trivalue prompt_password = TRI_DEFAULT;
6161
bool echo = false;
6262
bool interactive = false;
63-
char *conn_limit = NULL;
63+
int conn_limit = -2; /* less than minimum valid value */
6464
bool pwprompt = false;
6565
char *newpassword = NULL;
6666
char newuser_buf[128];
@@ -88,6 +88,8 @@ main(int argc, char *argv[])
8888
while ((c = getopt_long(argc, argv, "h:p:U:g:wWedDsSrRiIlLc:PE",
8989
long_options, &optindex)) != -1)
9090
{
91+
char *endptr;
92+
9193
switch (c)
9294
{
9395
case 'h':
@@ -142,7 +144,14 @@ main(int argc, char *argv[])
142144
login = TRI_NO;
143145
break;
144146
case '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+
}
146155
break;
147156
case 'P':
148157
pwprompt = true;
@@ -297,8 +306,8 @@ main(int argc, char *argv[])
297306
appendPQExpBufferStr(&sql, " REPLICATION");
298307
if (replication == TRI_NO)
299308
appendPQExpBufferStr(&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);
302311
if (roles.head != NULL)
303312
{
304313
SimpleStringListCell *cell;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy