diff options
| author | Tobias Schramm | 2018-02-18 12:46:05 +0000 |
|---|---|---|
| committer | John Crispin | 2018-02-20 07:16:54 +0000 |
| commit | f41ff608831b843719835f3657182a8c00aabbae (patch) | |
| tree | 1ca6db6c771034b52921cd45afe35d222ad77b85 | |
| parent | 9fd8070c6395ee0ab6b5a7c0d98c370ce0847553 (diff) | |
| download | uclient-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.c | 9 |
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) |