Skip to content

Commit

Permalink
crypto: xts - Replace memcpy() invocation with simple assignment
Browse files Browse the repository at this point in the history
Colin reports that the memcpy() call in xts_cts_final() trigggers a
"Overlapping buffer in memory copy" warning in Coverity, which is a
false postive, given that tail is guaranteed to be smaller than or
equal to the distance between source and destination.

However, given that any additional bytes that we copy will be ignored
anyway, we can simply copy XTS_BLOCK_SIZE unconditionally, which means
we can use struct assignment of the array members instead, which is
likely to be more efficient as well.

Addresses-Coverity: ("Overlapping buffer in memory copy")
Fixes: 8083b1b ("crypto: xts - add support for ciphertext stealing")
Reported-by: Colin Ian King <[email protected]>
Signed-off-by: Ard Biesheuvel <[email protected]>
Signed-off-by: Herbert Xu <[email protected]>
  • Loading branch information
ardbiesheuvel authored and herbertx committed Jul 31, 2020
1 parent 28ee8b0 commit 958ea4e
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion crypto/xts.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ static int xts_cts_final(struct skcipher_request *req,
offset - XTS_BLOCK_SIZE);

scatterwalk_map_and_copy(b, rctx->tail, 0, XTS_BLOCK_SIZE, 0);
memcpy(b + 1, b, tail);
b[1] = b[0];
scatterwalk_map_and_copy(b, req->src, offset, tail, 0);

le128_xor(b, &rctx->t, b);
Expand Down

0 comments on commit 958ea4e

Please sign in to comment.