From b4e21b76fd0b8b4a048f0d8125bc5a36c0ca8d42 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sun, 24 Jul 2016 14:01:45 +0100 Subject: URL unescape: Calculate new_len at end, rather than maintaining it. --- utils/url.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/utils/url.c b/utils/url.c index 9294e3d31..40f3708a4 100644 --- a/utils/url.c +++ b/utils/url.c @@ -71,8 +71,6 @@ nserror url_unescape(const char *str, size_t length, return NSERROR_NOMEM; } - new_len = length; - res_pos = result; str_end = str + length; if (length >= 3) { @@ -85,7 +83,6 @@ nserror url_unescape(const char *str, size_t length, if (c == '%' && isxdigit(c1) && isxdigit(c2)) { c = xdigit_to_hex(c1) << 4 | xdigit_to_hex(c2); str += 2; - new_len -= 2; } *res_pos++ = c; str++; @@ -97,7 +94,8 @@ nserror url_unescape(const char *str, size_t length, *res_pos++ = *str++; } - *res_pos++ = '\0'; + *res_pos = '\0'; + new_len = res_pos - result; if (new_len != length) { /* Shrink wrap the allocaiton around the string */ -- cgit v1.2.3