X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuhttpd.git;a=blobdiff_plain;f=utils.c;fp=utils.c;h=847ff340c3fd643c9f6794fd25dc4424222c0ba2;hp=aabb43008559b00c6d60d7b4588a967d7422579b;hb=fa1d60ad91e7cdc007d19011bb79ea666b83b5e6;hpb=adc5d408b5d28e8c91d81d885ef1da2a9016f1cf diff --git a/utils.c b/utils.c index aabb430..847ff34 100644 --- a/utils.c +++ b/utils.c @@ -149,12 +149,10 @@ int uh_urlencode(char *buf, int blen, const char *src, int slen) int uh_b64decode(char *buf, int blen, const unsigned char *src, int slen) { - int i = 0; - int len = 0; - - unsigned int cin = 0; unsigned int cout = 0; - + unsigned int cin = 0; + int len = 0; + int i = 0; for (i = 0; (i <= slen) && (src[i] != 0); i++) { @@ -177,19 +175,15 @@ int uh_b64decode(char *buf, int blen, const unsigned char *src, int slen) cout = (cout << 6) | cin; - if ((i % 4) == 3) - { - if ((len + 3) < blen) - { - buf[len++] = (char)(cout >> 16); - buf[len++] = (char)(cout >> 8); - buf[len++] = (char)(cout); - } - else - { - break; - } - } + if ((i % 4) != 3) + continue; + + if ((len + 3) >= blen) + break; + + buf[len++] = (char)(cout >> 16); + buf[len++] = (char)(cout >> 8); + buf[len++] = (char)(cout); } buf[len++] = 0;