summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortb <tb@openbsd.org>2018-11-07 18:31:16 +0000
committertb <tb@openbsd.org>2018-11-07 18:31:16 +0000
commitd47988541cfdf93ac547abe9f305b8002db45d81 (patch)
tree305ff1e735a7e6d4e83ebc7497fcc8912420d721
parentreport "." as a protocol-client event, it is the commit command, not really (diff)
downloadwireguard-openbsd-d47988541cfdf93ac547abe9f305b8002db45d81.tar.xz
wireguard-openbsd-d47988541cfdf93ac547abe9f305b8002db45d81.zip
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
-rw-r--r--lib/libcrypto/aes/aes_wrap.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/libcrypto/aes/aes_wrap.c b/lib/libcrypto/aes/aes_wrap.c
index b7e08ab75f2..b30630fe479 100644
--- a/lib/libcrypto/aes/aes_wrap.c
+++ b/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) {