changeset 21867:a5de42736743

var-expand-crypt: Fix data decryption
author Aki Tuomi <aki.tuomi@dovecot.fi>
date Mon, 27 Mar 2017 11:02:31 +0300
parents f23b6f713a50
children 84ab6a7f172f
files src/plugins/var-expand-crypt/var-expand-crypt-plugin.c
diffstat 1 files changed, 5 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/var-expand-crypt/var-expand-crypt-plugin.c	Mon Mar 27 09:39:03 2017 +0300
+++ b/src/plugins/var-expand-crypt/var-expand-crypt-plugin.c	Mon Mar 27 11:02:31 2017 +0300
@@ -260,18 +260,14 @@
 	if (var_expand_crypt_settings(&ctx, args, error_r) < 0)
 		return -1;
 
-	str_append(field_value, value);
-
-	const char *encdata = str_c(field_value);
-	const char *enciv = NULL;
+	const char *encdata = value;
+	const char *enciv = "";
 
 	/* make sure IV is correct */
 	if (ctx.iv->used == 0 && (p = strchr(encdata, '$')) != NULL) {
 		/* see if IV can be taken from data */
 		enciv = t_strcut(encdata, '$');
 		encdata = t_strcut(p+1,'$');
-	} else {
-		encdata = t_strdup(str_c(field_value));
 	}
 
 	str_truncate(field_value, 0);
@@ -301,8 +297,10 @@
 	ret = var_expand_crypt(dctx, ctx.enckey, ctx.iv, field_value, tmp, error_r);
 	dcrypt_ctx_sym_destroy(&dctx);
 
-	if (ret == 0)
+	if (ret == 0) {
 		*result_r = str_c(tmp);
+		ret = 1;
+	}
 
 	return ret;
 }