Mercurial > libavutil.hg
changeset 265:e9dcd3be3f67 libavutil
get_packetheader() forgot to read the header_checksum in big packets
patch from Clemens Ladisch cladisch AT fastmail dot net
(stray base64 patch reverted in the next commits)
author | lu_zero |
---|---|
date | Wed, 28 Feb 2007 03:28:31 +0000 |
parents | 73376a65f2e1 |
children | d028884d33fa |
files | Makefile avutil.h base64.c base64.h |
diffstat | 4 files changed, 23 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile Tue Feb 27 17:49:00 2007 +0000 +++ b/Makefile Wed Feb 28 03:28:31 2007 +0000 @@ -18,7 +18,7 @@ HEADERS = avutil.h common.h mathematics.h integer.h rational.h \ intfloat_readwrite.h md5.h adler32.h log.h fifo.h lzo.h \ - random.h + random.h base64.h NAME=avutil LIBVERSION=$(LAVUVERSION)
--- a/avutil.h Tue Feb 27 17:49:00 2007 +0000 +++ b/avutil.h Wed Feb 28 03:28:31 2007 +0000 @@ -34,8 +34,8 @@ #define AV_STRINGIFY(s) AV_TOSTRING(s) #define AV_TOSTRING(s) #s -#define LIBAVUTIL_VERSION_INT ((49<<16)+(3<<8)+0) -#define LIBAVUTIL_VERSION 49.3.0 +#define LIBAVUTIL_VERSION_INT ((49<<16)+(4<<8)+0) +#define LIBAVUTIL_VERSION 49.4.0 #define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT #define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION)
--- a/base64.c Tue Feb 27 17:49:00 2007 +0000 +++ b/base64.c Wed Feb 28 03:28:31 2007 +0000 @@ -70,17 +70,17 @@ * 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 *out, int out_len, uint8_t * src, int len) { static const char b64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - char *ret, *dst; + char *dst; unsigned i_bits = 0; int i_shift = 0; int bytes_remaining = len; - if (len < UINT_MAX / 4) { - ret = dst = av_malloc(len * 4 / 3 + 12); + if (len < UINT_MAX / 4 && out_len > (len * 4 / 3 + 12) && out) { + dst = out; } else return NULL; @@ -95,12 +95,12 @@ i_shift -= 6; } while (i_shift > 6 || (bytes_remaining == 0 && i_shift > 0)); } - while ((dst - ret) & 3) + while ((dst - out) & 3) *dst++ = '='; } *dst = '\0'; - return ret; + return out; } // #define TEST_BASE64 @@ -131,10 +131,12 @@ }; for (t = tests; t->data; t++) { char *str; + int ret; av_log(NULL, AV_LOG_ERROR, "Encoding %s...\n", (char *) t->data); - str = av_base64_encode(t->data, t->len); - if (str) { + str = av_malloc(t->len * 4 / 3 + 12); + ret = av_base64_encode(str, t->len * 4 / 3 + 12, t->data, t->len); + if (ret > 0) { av_log(NULL, AV_LOG_ERROR, "Encoded to %s...\n", str); if (strcmp(str, t->result) != 0) { av_log(NULL, AV_LOG_ERROR, "failed test %d: %s != %s\n", @@ -168,9 +170,9 @@ srand(123141); // time(NULL)); for (test_count = 0; test_count < 100; test_count++) { int size = rand() % 1024; - int ii; + int ii, ret; uint8_t *data; - char *encoded_result; + char *encoded_result = av_malloc(size * 4 / 3 + 12); av_log(NULL, AV_LOG_ERROR, "Test %d: Size %d bytes...", test_count, size); @@ -179,8 +181,9 @@ data[ii] = rand() % 255; } - encoded_result = av_base64_encode(data, size); - if (encoded_result) { + ret = av_base64_encode(encoded_result, size * 4 / 3 + 12, + data, size); + if (ret > 0) { int decode_buffer_size = size + 10; // try without 10 as well uint8_t *decode_buffer = av_malloc(decode_buffer_size); if (decode_buffer) {
--- a/base64.h Tue Feb 27 17:49:00 2007 +0000 +++ b/base64.h Wed Feb 28 03:28:31 2007 +0000 @@ -27,7 +27,11 @@ /** * encodes base64 + * @param out string + * @param out_len of the string, must be at least (len * 4 / 3 + 12) * @param src data, not a string + * @param len data length + * @return the zero terminated encoded string or NULL in case of errors */ -char *av_base64_encode(uint8_t * src, int len); +char *av_base64_encode(char *out, int out_len, uint8_t * src, int len);