aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-01-19 20:38:29 +0800
committerGitHub <noreply@github.com>2023-01-19 20:38:29 +0800
commitadfad50ac03030abf2533db9f56fa681af6cdc1f (patch)
treef181d21570a342e7ba505075c2edda58ab70f068
parent363d153bb94a965ff811d8c7514047264b37d61d (diff)
downloadrneovim-adfad50ac03030abf2533db9f56fa681af6cdc1f.tar.gz
rneovim-adfad50ac03030abf2533db9f56fa681af6cdc1f.tar.bz2
rneovim-adfad50ac03030abf2533db9f56fa681af6cdc1f.zip
fix(rpc): don't parse msgpack if buflen is 0 (#21899)
This prevents `buflen` from becoming a very large number when it is 0 when calling mpack_rtoken().
-rw-r--r--src/mpack/mpack_core.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/mpack/mpack_core.c b/src/mpack/mpack_core.c
index 4ee67a032a..3424f444b9 100644
--- a/src/mpack/mpack_core.c
+++ b/src/mpack/mpack_core.c
@@ -173,6 +173,9 @@ MPACK_API int mpack_write(mpack_tokbuf_t *tokbuf, char **buf, size_t *buflen,
int mpack_rtoken(const char **buf, size_t *buflen, mpack_token_t *tok)
{
+ if (*buflen == 0) {
+ return MPACK_EOF;
+ }
unsigned char t = ADVANCE(buf, buflen);
if (t < 0x80) {
/* positive fixint */