Mercurial > mplayer.hg
changeset 17778:37bfcf89c89c
Fix base64 encoding for basic auth according to RFC.
Patch by Jeff D'Angelo (jcd+mplayer at psu edu).
author | reimar |
---|---|
date | Wed, 08 Mar 2006 15:14:08 +0000 |
parents | 13b2332c5154 |
children | 031185213fa9 |
files | libmpdemux/http.c |
diffstat | 1 files changed, 8 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/libmpdemux/http.c Wed Mar 08 15:07:48 2006 +0000 +++ b/libmpdemux/http.c Wed Mar 08 15:14:08 2006 +0000 @@ -659,7 +659,7 @@ int base64_encode(const void *enc, int encLen, char *out, int outMax) { - static const char b64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"; + static const char b64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; unsigned char *encBuf; int outLen; @@ -670,6 +670,7 @@ outLen = 0; bits = 0; shift = 0; + outMax &= ~3; while( outLen<outMax ) { if( encLen>0 ) { @@ -685,9 +686,12 @@ bits <<= 6 - shift; shift = 6; } else { - // Terminate with Mime style '=' - *out = '='; - outLen++; + // As per RFC 2045, section 6.8, + // pad output as necessary: 0 to 2 '=' chars. + while( outLen & 3 ){ + *out++ = '='; + outLen++; + } return outLen; }