int post, err, ch;
char line[1024], *q;
char *auth_b64;
+ int auth_b64_len = strlen(auth)* 4 / 3 + 12;
offset_t off = s->off;
/* send http header */
post = h->flags & URL_WRONLY;
-
- auth_b64 = av_base64_encode((uint8_t *)auth, strlen(auth));
+ auth_b64 = av_malloc(auth_b64_len);
+ av_base64_encode(auth_b64, auth_b64_len, (uint8_t *)auth, strlen(auth));
snprintf(s->buffer, sizeof(s->buffer),
"%s %s HTTP/1.1\r\n"
"User-Agent: %s\r\n"
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 mem.h
+ random.h mem.h base64.h
NAME=avutil
LIBVERSION=$(LAVUVERSION)
#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)
* 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+/";
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++;
/**
* encodes base64
* @param src data, not a string
+ * @param buf output string
*/
-char *av_base64_encode(uint8_t * src, int len);
+char *av_base64_encode(char * buf, int buf_len, uint8_t * src, int len);