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;