mirror of
https://github.com/moparisthebest/curl
synced 2024-08-13 17:03:50 -04:00
base64: Post basic validation tidy up
Due to the length checks introduced in commit e17c1b25bc
there is no
need to allow for extra space in the output buffer for a non-padded last
quantum.
This commit is contained in:
parent
dc68120e63
commit
4d10f48629
17
lib/base64.c
17
lib/base64.c
@ -115,14 +115,13 @@ CURLcode Curl_base64_decode(const char *src,
|
||||
return CURLE_BAD_CONTENT_ENCODING;
|
||||
|
||||
/* Calculate the number of quantums */
|
||||
numQuantums = (length + equalsTerm) / 4;
|
||||
numQuantums = srcLen / 4;
|
||||
|
||||
/* Calculate the size of the decoded string */
|
||||
rawlen = (numQuantums * 3) - equalsTerm;
|
||||
|
||||
/* The buffer must be large enough to make room for the last quantum
|
||||
(which may be partially thrown out) and the zero terminator. */
|
||||
newstr = malloc(rawlen+4);
|
||||
/* Allocate our buffer including room for a zero terminator */
|
||||
newstr = malloc(rawlen + 1);
|
||||
if(!newstr)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
|
||||
@ -135,16 +134,16 @@ CURLcode Curl_base64_decode(const char *src,
|
||||
newstr += 3; src += 4;
|
||||
}
|
||||
|
||||
/* This final decode may actually read slightly past the end of the buffer
|
||||
if the input string is missing pad bytes. This will almost always be
|
||||
harmless. */
|
||||
/* Decode the last quantum */
|
||||
decodeQuantum(lastQuantum, src);
|
||||
for(i = 0; i < 3 - equalsTerm; i++)
|
||||
newstr[i] = lastQuantum[i];
|
||||
|
||||
newstr[i] = '\0'; /* zero terminate */
|
||||
/* Zero terminate */
|
||||
newstr[i] = '\0';
|
||||
|
||||
*outlen = rawlen; /* return size of decoded data */
|
||||
/* Return the size of decoded data */
|
||||
*outlen = rawlen;
|
||||
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user