From: Petr Štetiar Date: Tue, 8 Dec 2020 16:34:50 +0000 (+0100) Subject: uclient-http: fix freeing of stack allocated memory X-Git-Url: http://git.openwrt.org/?p=project%2Fuclient.git;a=commitdiff_plain;h=436f9b3af2adde11526b4f281951aed6c5d48e6e uclient-http: fix freeing of stack allocated memory Fixes following issue reported by clang-12 static analyzer: uclient-http.c:568:2: warning: Memory allocated by alloca() should not be deallocated [unix.Malloc] free(buf_orig); ^~~~~~~~~~~~~~ Signed-off-by: Petr Štetiar --- diff --git a/uclient-http.c b/uclient-http.c index 2796696..7eb4692 100644 --- a/uclient-http.c +++ b/uclient-http.c @@ -441,7 +441,7 @@ uclient_http_add_auth_digest(struct uclient_http *uh) struct uclient_url *url = uh->uc.url; const char *realm = NULL, *opaque = NULL; const char *user, *password; - char *buf, *next, *buf_orig; + char *buf, *next; int len, ofs; int err = 0; @@ -471,7 +471,7 @@ uclient_http_add_auth_digest(struct uclient_http *uh) strcpy(buf, uh->auth_str); /* skip auth type */ - buf_orig = strsep(&buf, " "); + strsep(&buf, " "); next = buf; while (*next) { @@ -507,7 +507,7 @@ uclient_http_add_auth_digest(struct uclient_http *uh) if (!realm || !data.qop || !data.nonce) { err = -EINVAL; - goto fail_buf; + goto fail; } sprintf(nc_str, "%08x", uh->nc++); @@ -524,13 +524,13 @@ uclient_http_add_auth_digest(struct uclient_http *uh) len = password - url->auth; if (len > 256) { err = -EINVAL; - goto fail_buf; + goto fail; } user_buf = alloca(len + 1); if (!user_buf) { err = -ENOMEM; - goto fail_buf; + goto fail; } strncpy(user_buf, url->auth, len); @@ -564,8 +564,6 @@ uclient_http_add_auth_digest(struct uclient_http *uh) return 0; -fail_buf: - free(buf_orig); fail: return err; }