Fix base64 encoding for basic auth according to RFC.

Patch by Jeff D'Angelo (jcd+mplayer at psu edu).


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17779 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
reimar 2006-03-08 15:14:08 +00:00
parent 5b3801e774
commit dddd5404a5
1 changed files with 8 additions and 4 deletions

View File

@ -659,7 +659,7 @@ http_debug_hdr( HTTP_header_t *http_hdr ) {
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 @@ base64_encode(const void *enc, int encLen, char *out, int outMax) {
outLen = 0;
bits = 0;
shift = 0;
outMax &= ~3;
while( outLen<outMax ) {
if( encLen>0 ) {
@ -685,9 +686,12 @@ base64_encode(const void *enc, int encLen, char *out, int outMax) {
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;
}