aboutsummaryrefslogtreecommitdiff
path: root/strbuf.c
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2024-10-30 01:03:44 +0100
committerJohannes Schindelin <johannes.schindelin@gmx.de>2024-11-26 22:15:01 +0100
commit67809f7c4c654e0f7c4fefff3b46451e217a0294 (patch)
tree7700e54fbb52098f90cca4dab818085f5f7b2868 /strbuf.c
parent4f71522dfb7fc53eff569023303980c66114b1bc (diff)
parentfc16eb306c2ad25c080612ae85fdeba1fbcbfc98 (diff)
downloadgit-67809f7c4c654e0f7c4fefff3b46451e217a0294.tar.xz
Sync with 2.45.3
* maint-2.45: Git 2.45.3 Git 2.44.3 Git 2.43.6 Git 2.42.4 Git 2.41.3 Git 2.40.4 credential: disallow Carriage Returns in the protocol by default credential: sanitize the user prompt credential_format(): also encode <host>[:<port>] t7300: work around platform-specific behaviour with long paths on MinGW compat/regex: fix argument order to calloc(3) mingw: drop bogus (and unneeded) declaration of `_pgmptr` ci: remove 'Upload failed tests' directories' step from linux32 jobs
Diffstat (limited to 'strbuf.c')
-rw-r--r--strbuf.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/strbuf.c b/strbuf.c
index 3d2189a7f6..988fcfe543 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -495,7 +495,9 @@ void strbuf_add_percentencode(struct strbuf *dst, const char *src, int flags)
unsigned char ch = src[i];
if (ch <= 0x1F || ch >= 0x7F ||
(ch == '/' && (flags & STRBUF_ENCODE_SLASH)) ||
- strchr(URL_UNSAFE_CHARS, ch))
+ ((flags & STRBUF_ENCODE_HOST_AND_PORT) ?
+ !isalnum(ch) && !strchr("-.:[]", ch) :
+ !!strchr(URL_UNSAFE_CHARS, ch)))
strbuf_addf(dst, "%%%02X", (unsigned char)ch);
else
strbuf_addch(dst, ch);