summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Schramm <tobleminer@gmail.com>2018-02-18 13:46:05 +0100
committerJohn Crispin <john@phrozen.org>2018-02-20 08:16:54 +0100
commitf41ff608831b843719835f3657182a8c00aabbae (patch)
tree1ca6db6c771034b52921cd45afe35d222ad77b85
parent9fd8070c6395ee0ab6b5a7c0d98c370ce0847553 (diff)
downloaduclient-f41ff608831b843719835f3657182a8c00aabbae.tar.gz
uclient-http: basic auth: Handle memory allocation failure
Allocation of the base64 buffer might fail, resulting in a null ptr being passed to base64_encode as a target buffer Signed-off-by: Tobias Schramm <tobleminer@gmail.com>
-rw-r--r--uclient-http.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/uclient-http.c b/uclient-http.c
index ef8de98..36e2b38 100644
--- a/uclient-http.c
+++ b/uclient-http.c
@@ -299,7 +299,7 @@ static bool uclient_request_supports_body(enum request_type req_type)
}
}
-static void
+static int
uclient_http_add_auth_basic(struct uclient_http *uh)
{
struct uclient_url *url = uh->uc.url;
@@ -307,11 +307,16 @@ uclient_http_add_auth_basic(struct uclient_http *uh)
char *auth_buf;
if (auth_len > 512)
- return;
+ return -EINVAL;
auth_buf = alloca(base64_len(auth_len) + 1);
+ if (!auth_buf)
+ return -ENOMEM;
+
base64_encode(url->auth, auth_len, auth_buf);
ustream_printf(uh->us, "Authorization: Basic %s\r\n", auth_buf);
+
+ return 0;
}
static char *digest_unquote_sep(char **str)