diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/base64.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/lib/base64.c b/lib/base64.c index 04cf2c9db..9bb7de495 100644 --- a/lib/base64.c +++ b/lib/base64.c @@ -187,11 +187,11 @@ static CURLcode base64_encode(const char *table64, *outptr = NULL; *outlen = 0; - if(0 == insize) + if(!insize) insize = strlen(indata); - base64data = output = malloc(insize*4/3+4); - if(NULL == output) + base64data = output = malloc(insize * 4 / 3 + 4); + if(!output) return CURLE_OUT_OF_MEMORY; /* @@ -233,12 +233,14 @@ static CURLcode base64_encode(const char *table64, table64[obuf[0]], table64[obuf[1]]); break; + case 2: /* two bytes read */ snprintf(output, 5, "%c%c%c=", table64[obuf[0]], table64[obuf[1]], table64[obuf[2]]); break; + default: snprintf(output, 5, "%c%c%c%c", table64[obuf[0]], @@ -249,12 +251,17 @@ static CURLcode base64_encode(const char *table64, } output += 4; } + + /* Zero terminate */ *output = '\0'; - *outptr = base64data; /* return pointer to new data, allocated memory */ + + /* Return the pointer to the new data (allocated memory) */ + *outptr = base64data; free(convbuf); - *outlen = strlen(base64data); /* return the length of the new data */ + /* Return the length of the new data */ + *outlen = strlen(base64data); return CURLE_OK; } @@ -306,4 +313,3 @@ CURLcode Curl_base64url_encode(struct SessionHandle *data, { return base64_encode(base64url, data, inputbuff, insize, outptr, outlen); } -/* ---- End of Base64 Encoding ---- */ |