From bd03c380ce67cffaaf3c456407cc98e02917ebf7 Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Mon, 19 Mar 2007 00:48:47 +0000 Subject: expose av_base64_decode and av_base64_encode Originally committed as revision 8448 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavutil/base64.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'libavutil/base64.c') diff --git a/libavutil/base64.c b/libavutil/base64.c index 6279244d3b..bee800c824 100644 --- a/libavutil/base64.c +++ b/libavutil/base64.c @@ -70,7 +70,7 @@ int av_base64_decode(uint8_t * out, const char *in, int out_length) * fixed edge cases and made it work from data (vs. strings) by ryan. *****************************************************************************/ -char *av_base64_encode(uint8_t * src, int len) +char *av_base64_encode(char * buf, int buf_len, uint8_t * src, int len) { static const char b64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; @@ -79,11 +79,10 @@ char *av_base64_encode(uint8_t * src, int len) int i_shift = 0; int bytes_remaining = len; - if (len < UINT_MAX / 4) { - ret = dst = av_malloc(len * 4 / 3 + 12); - } else + if (len >= UINT_MAX / 4 || + buf_len < len * 4 / 3 + 12) return NULL; - + ret = dst = buf; if (len) { // special edge case, what should we really do here? while (bytes_remaining) { i_bits = (i_bits << 8) + *src++; -- cgit v1.2.3