]> 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)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 3 Apr 2017 10:55:46 +0000 (13:55 +0300)
src/plugins/var-expand-crypt/var-expand-crypt-plugin.c

index 731be0a1d836681227bfe8f69fef651ae65dfb47..812ea3a6f8dd02906b4c0124d98741eca7a498fc 100644 (file)
@@ -260,18 +260,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);
@@ -301,8 +297,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;
 }