virtio-crypto: use the correct length for cipher operation
authorGonglei <arei.gonglei@huawei.com>
Thu, 22 Dec 2016 03:37:03 +0000 (11:37 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Tue, 10 Jan 2017 05:02:52 +0000 (07:02 +0200)
In some modes of cipher algorithms, the length of destination data
maybe larger then source data, such as ciphertext stealing (CTS).

For symmetric algorithms, the length of ciphertext is definitly
equal to the plaintext for each crypto operation. So we should
use the src_len instead of dst_len avoid to pass the incorrect
cryptographical results to the frontend driver.

Signed-off-by: Gonglei <arei.gonglei@huawei.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/virtio/virtio-crypto.c

index c23e1ad4588a4d17c9f1e4553d1186c053fe5e29..f872c87cb9807816b8c6eaec7187510413c6de38 100644 (file)
@@ -355,7 +355,7 @@ virtio_crypto_sym_input_data_helper(VirtIODevice *vdev,
         return;
     }
 
-    len = sym_op_info->dst_len;
+    len = sym_op_info->src_len;
     /* Save the cipher result */
     s = iov_from_buf(req->in_iov, req->in_num, 0, sym_op_info->dst, len);
     if (s != len) {