From 49797ddc135fae1b661c1076d2f19e4b9979f0a9 Mon Sep 17 00:00:00 2001 From: tb <> Date: Wed, 7 Nov 2018 18:31:16 +0000 Subject: Use memmove() instead of memcpy() to get rid of the need for non-overlapping *in and *out buffers as we're already implementing the "in place (un)wrapping" algorithms as given in RFC 3394. This removes a gratuitous API difference to OpenSSLin these undocumented functions. Found while working on wycheproof regress tests. ok beck jsing --- src/lib/libcrypto/aes/aes_wrap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/libcrypto/aes/aes_wrap.c b/src/lib/libcrypto/aes/aes_wrap.c index b7e08ab75f..b30630fe47 100644 --- a/src/lib/libcrypto/aes/aes_wrap.c +++ b/src/lib/libcrypto/aes/aes_wrap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: aes_wrap.c,v 1.11 2018/10/20 15:53:09 tb Exp $ */ +/* $OpenBSD: aes_wrap.c,v 1.12 2018/11/07 18:31:16 tb Exp $ */ /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL * project. */ @@ -71,7 +71,7 @@ AES_wrap_key(AES_KEY *key, const unsigned char *iv, unsigned char *out, return -1; A = B; t = 1; - memcpy(out + 8, in, inlen); + memmove(out + 8, in, inlen); if (!iv) iv = default_iv; @@ -108,7 +108,7 @@ AES_unwrap_key(AES_KEY *key, const unsigned char *iv, unsigned char *out, A = B; t = 6 * (inlen >> 3); memcpy(A, in, 8); - memcpy(out, in + 8, inlen); + memmove(out, in + 8, inlen); for (j = 0; j < 6; j++) { R = out + inlen - 8; for (i = 0; i < inlen; i += 8, t--, R -= 8) { -- cgit v1.2.3-55-g6feb