Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6713:cfdf3b2e3dd3 HEAD
base64_decode(): Update src_pos_r even if we return -1.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 06 Nov 2007 23:50:57 +0200 |
parents | ebe275c91ba4 |
children | 700555e06849 |
files | src/lib/base64.c |
diffstat | 1 files changed, 15 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- 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;