mirror of
https://github.com/warmcat/libwebsockets.git
synced 2025-03-16 00:00:07 +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:
parent
5594735115
commit
7dbdb776d9
1 changed files with 11 additions and 9 deletions
|
@ -99,7 +99,7 @@ LWS_VISIBLE int
|
||||||
lws_b64_decode_string(const char *in, char *out, int out_size)
|
lws_b64_decode_string(const char *in, char *out, int out_size)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
int i;
|
int i, c;
|
||||||
int done = 0;
|
int done = 0;
|
||||||
unsigned char v;
|
unsigned char v;
|
||||||
unsigned char quad[4];
|
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++) {
|
for (i = 0; i < 4 && *in; i++) {
|
||||||
|
|
||||||
v = 0;
|
v = 0;
|
||||||
|
c = 0;
|
||||||
while (*in && !v) {
|
while (*in && !v) {
|
||||||
|
c = v = *in++;
|
||||||
v = *in++;
|
|
||||||
v = (v < 43 || v > 122) ? 0 : decode[v - 43];
|
v = (v < 43 || v > 122) ? 0 : decode[v - 43];
|
||||||
if (v)
|
if (v)
|
||||||
v = (v == '$') ? 0 : v - 61;
|
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))
|
if (out_size < (done + len - 1))
|
||||||
|
@ -147,6 +147,7 @@ lws_b64_decode_string(const char *in, char *out, int out_size)
|
||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
int
|
int
|
||||||
lws_b64_selftest(void)
|
lws_b64_selftest(void)
|
||||||
{
|
{
|
||||||
|
@ -183,3 +184,4 @@ lws_b64_selftest(void)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
Loading…
Add table
Reference in a new issue