summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHarry Sintonen <sintonen@iki.fi>2023-01-11 11:39:33 +0100
committerDaniel Stenberg <daniel@haxx.se>2023-01-12 14:09:23 +0100
commit2ed0e1f70ee176edf3d2292ab01201eb6baf86b3 (patch)
tree97743456183f9a8c10749504872b0c733082646e /src
parentd6b5d9f4ae65552788f81fbb5da7046423b37586 (diff)
downloadcurl-2ed0e1f70ee176edf3d2292ab01201eb6baf86b3.tar.gz
tool_getparam: fix hiding of command line secrets
Closes #10276
Diffstat (limited to 'src')
-rw-r--r--src/tool_getparam.c14
-rw-r--r--src/tool_getparam.h1
-rw-r--r--src/tool_parsecfg.c2
3 files changed, 10 insertions, 7 deletions
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
index 68bc83223..bb4303a8c 100644
--- a/src/tool_getparam.c
+++ b/src/tool_getparam.c
@@ -660,6 +660,7 @@ static ParameterError data_urlencode(struct GlobalConfig *global,
ParameterError getparameter(const char *flag, /* f or -long-flag */
char *nextarg, /* NULL if unset */
+ argv_item_t cleararg,
bool *usedarg, /* set to TRUE if the arg
has been used */
struct GlobalConfig *global,
@@ -764,15 +765,16 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
/* this option requires an extra parameter */
if(!longopt && parse[1]) {
nextarg = (char *)&parse[1]; /* this is the actual extra parameter */
-#ifdef HAVE_WRITABLE_ARGV
- clearthis = nextarg;
-#endif
singleopt = TRUE; /* don't loop anymore after this */
}
else if(!nextarg)
return PARAM_REQUIRES_PARAMETER;
- else
+ else {
+#ifdef HAVE_WRITABLE_ARGV
+ clearthis = cleararg;
+#endif
*usedarg = TRUE; /* mark it as used */
+ }
if((aliases[hit].desc == ARG_FILENAME) &&
(nextarg[0] == '-') && nextarg[1]) {
@@ -2494,7 +2496,7 @@ ParameterError parse_args(struct GlobalConfig *global, int argc,
}
}
- result = getparameter(orig_opt, nextarg, &passarg,
+ result = getparameter(orig_opt, nextarg, argv[i + 1], &passarg,
global, config);
curlx_unicodefree(nextarg);
@@ -2533,7 +2535,7 @@ ParameterError parse_args(struct GlobalConfig *global, int argc,
bool used;
/* Just add the URL please */
- result = getparameter("--url", orig_opt, &used, global, config);
+ result = getparameter("--url", orig_opt, argv[i], &used, global, config);
}
if(!result)
diff --git a/src/tool_getparam.h b/src/tool_getparam.h
index 677ce8e5f..827a04e81 100644
--- a/src/tool_getparam.h
+++ b/src/tool_getparam.h
@@ -55,6 +55,7 @@ struct GlobalConfig;
struct OperationConfig;
ParameterError getparameter(const char *flag, char *nextarg,
+ argv_item_t cleararg,
bool *usedarg,
struct GlobalConfig *global,
struct OperationConfig *operation);
diff --git a/src/tool_parsecfg.c b/src/tool_parsecfg.c
index ffc19fdf0..50d03f666 100644
--- a/src/tool_parsecfg.c
+++ b/src/tool_parsecfg.c
@@ -223,7 +223,7 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
#ifdef DEBUG_CONFIG
fprintf(stderr, "PARAM: \"%s\"\n",(param ? param : "(null)"));
#endif
- res = getparameter(option, param, &usedarg, global, operation);
+ res = getparameter(option, param, NULL, &usedarg, global, operation);
operation = global->last;
if(!res && param && *param && !usedarg)