aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/base64.c18
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 ---- */