]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
var-expand-crypt: Fix data decryption
authorAki Tuomi <aki.tuomi@dovecot.fi>
Mon, 27 Mar 2017 08:02:31 +0000 (11:02 +0300)
committerGitLab <gitlab@git.dovecot.net>
Thu, 30 Mar 2017 17:48:59 +0000 (20:48 +0300)
src/plugins/var-expand-crypt/var-expand-crypt-plugin.c

index b67def0168281fa46444a706856f85d5cc15c7b6..977f71d679536230d1cdf5f6eeac7d61efb0cb3d 100644 (file)
@@ -257,18 +257,14 @@ var_expand_decrypt(struct var_expand_context *_ctx,
        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);
@@ -298,8 +294,10 @@ var_expand_decrypt(struct var_expand_context *_ctx,
        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;
 }