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:
parent
7bc87ab662
commit
8007cc6829
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)
|
||||
{
|
||||
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
|
||||
|
|
Loading…
Add table
Reference in a new issue