aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/base64.c
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-05-24 19:18:11 +0000
committerJosh Rahm <joshuarahm@gmail.com>2024-05-24 19:18:11 +0000
commitff7ed8f586589d620a806c3758fac4a47a8e7e15 (patch)
tree729bbcb92231538fa61dab6c3d890b025484b7f5 /src/nvim/base64.c
parent376914f419eb08fdf4c1a63a77e1f035898a0f10 (diff)
parent28c04948a1c887a1cc0cb64de79fa32631700466 (diff)
downloadrneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.tar.gz
rneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.tar.bz2
rneovim-ff7ed8f586589d620a806c3758fac4a47a8e7e15.zip
Merge remote-tracking branch 'upstream/master' into mix_20240309
Diffstat (limited to 'src/nvim/base64.c')
-rw-r--r--src/nvim/base64.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/nvim/base64.c b/src/nvim/base64.c
index d461b7e3ff..a645c64fe3 100644
--- a/src/nvim/base64.c
+++ b/src/nvim/base64.c
@@ -132,12 +132,18 @@ char *base64_encode(const char *src, size_t src_len)
/// Decode a Base64 encoded string.
///
+/// The returned string is NOT null-terminated, because the decoded string may
+/// contain embedded NULLs. Use the output parameter out_lenp to determine the
+/// length of the returned string.
+///
/// @param src Base64 encoded string
/// @param src_len Length of {src}
+/// @param [out] out_lenp Returns the length of the decoded string
/// @return Decoded string
-char *base64_decode(const char *src, size_t src_len)
+char *base64_decode(const char *src, size_t src_len, size_t *out_lenp)
{
assert(src != NULL);
+ assert(out_lenp != NULL);
char *dest = NULL;
@@ -155,7 +161,7 @@ char *base64_decode(const char *src, size_t src_len)
const uint8_t *s = (const uint8_t *)src;
- dest = xmalloc(out_len + 1);
+ dest = xmalloc(out_len);
int acc = 0;
int acc_len = 0;
@@ -203,7 +209,7 @@ char *base64_decode(const char *src, size_t src_len)
}
}
- dest[out_len] = '\0';
+ *out_lenp = out_len;
return dest;
@@ -212,5 +218,7 @@ invalid:
xfree((void *)dest);
}
+ *out_lenp = 0;
+
return NULL;
}