From b9945c458ef0abfe20bfec6dc84b5ef65a39c0cb Mon Sep 17 00:00:00 2001 From: eeff <33566201+eeff@users.noreply.github.com> Date: Wed, 14 Jun 2023 15:47:19 +0800 Subject: [PATCH] fix: neu_url_decode return value on buffer overflow --- src/utils/http.c | 2 +- tests/http_test.cc | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/utils/http.c b/src/utils/http.c index 842c7084..270bffe0 100644 --- a/src/utils/http.c +++ b/src/utils/http.c @@ -77,7 +77,7 @@ ssize_t neu_url_decode(const char *s, size_t len, char *buf, size_t size) } buf[j++] = c; } - buf[(j < size) ? j : --j] = '\0'; + buf[(j < size) ? j : j - 1] = '\0'; return j; } diff --git a/tests/http_test.cc b/tests/http_test.cc index 098dbd59..a6a28e7a 100644 --- a/tests/http_test.cc +++ b/tests/http_test.cc @@ -113,6 +113,11 @@ TEST(HTTPTest, http_get_param_str) EXPECT_EQ(ret, 3); EXPECT_EQ(0, strcmp("组", buf)); + nng_http_req_set_uri(req, "/?group=%E7%BB%84"); + ret = neu_http_get_param_str(aio, "group", buf, 3); + EXPECT_EQ(ret, 3); + EXPECT_EQ(0, strncmp("组", buf, 2)); + nng_aio_free(aio); nng_http_req_free(req); nng_url_free(url);