1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-09 00:00:04 +01:00

b64decode correct decode of some strings

https://github.com/warmcat/libwebsockets/issues/467

Signed-off-by: Andy Green <andy@warmcat.com>
This commit is contained in:
Andy Green 2016-03-19 07:43:22 +08:00
parent 7bc87ab662
commit 8007cc6829

View file

@ -99,7 +99,7 @@ LWS_VISIBLE int
lws_b64_decode_string(const char *in, char *out, int out_size)
{
int len;
int i;
int i, c;
int done = 0;
unsigned char v;
unsigned char quad[4];
@ -110,19 +110,19 @@ lws_b64_decode_string(const char *in, char *out, int out_size)
for (i = 0; i < 4 && *in; i++) {
v = 0;
c = 0;
while (*in && !v) {
v = *in++;
c = v = *in++;
v = (v < 43 || v > 122) ? 0 : decode[v - 43];
if (v)
v = (v == '$') ? 0 : v - 61;
if (*in) {
len++;
if (v)
quad[i] = v - 1;
} else
quad[i] = 0;
}
if (c) {
len++;
if (v)
quad[i] = v - 1;
} else
quad[i] = 0;
}
if (out_size < (done + len - 1))
@ -147,6 +147,7 @@ lws_b64_decode_string(const char *in, char *out, int out_size)
return done;
}
#if 0
int
lws_b64_selftest(void)
{
@ -183,3 +184,4 @@ lws_b64_selftest(void)
return 0;
}
#endif