dovecot: base64_decode(): Update src_pos_r even if we return -1.

dovecot at dovecot.org dovecot at dovecot.org
Tue Nov 6 23:51:00 EET 2007


details:   http://hg.dovecot.org/dovecot/rev/cfdf3b2e3dd3
changeset: 6713:cfdf3b2e3dd3
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Nov 06 23:50:57 2007 +0200
description:
base64_decode(): Update src_pos_r even if we return -1.

diffstat:

1 file changed, 15 insertions(+), 7 deletions(-)
src/lib/base64.c |   22 +++++++++++++++-------

diffs (46 lines):

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 @@ int base64_decode(const void *src, size_
 				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 @@ int base64_decode(const void *src, size_
 		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;


More information about the dovecot-cvs mailing list