# HG changeset patch # User Timo Sirainen # Date 1194385857 -7200 # Node ID cfdf3b2e3dd38f72f5575a5a64d730cd55cb2aea # Parent ebe275c91ba4df6063f7eab01d3c65091046416e base64_decode(): Update src_pos_r even if we return -1. diff -r ebe275c91ba4 -r cfdf3b2e3dd3 src/lib/base64.c --- a/src/lib/base64.c Tue Nov 06 23:37:18 2007 +0200 +++ b/src/lib/base64.c Tue Nov 06 23:50:57 2007 +0200 @@ -97,18 +97,24 @@ src_pos++; continue; } - return -1; + ret = -1; + break; } input[1] = b64dec[src_c[src_pos+1]]; - if (input[1] == 0xff) - return -1; + if (input[1] == 0xff) { + ret = -1; + break; + } output[0] = (input[0] << 2) | (input[1] >> 4); input[2] = b64dec[src_c[src_pos+2]]; if (input[2] == 0xff) { - if (src_c[src_pos+2] != '=' || src_c[src_pos+3] != '=') - return -1; + if (src_c[src_pos+2] != '=' || + src_c[src_pos+3] != '=') { + ret = -1; + break; + } buffer_append(dest, output, 1); ret = 0; src_pos += 4; @@ -118,8 +124,10 @@ output[1] = (input[1] << 4) | (input[2] >> 2); input[3] = b64dec[src_c[src_pos+3]]; if (input[3] == 0xff) { - if (src_c[src_pos+3] != '=') - return -1; + if (src_c[src_pos+3] != '=') { + ret = -1; + break; + } buffer_append(dest, output, 2); ret = 0; src_pos += 4;