summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2023-07-24 10:21:29 +0000
committerjsing <>2023-07-24 10:21:29 +0000
commit4c10fa62f800291a02f5e14311eec1a14d18057b (patch)
tree0dbd9fa528deda0e3942a21625262815f38e590f /src
parentf2f413bc31d7cedb745ae01be668b1cdc3d17d1b (diff)
downloadopenbsd-4c10fa62f800291a02f5e14311eec1a14d18057b.tar.gz
openbsd-4c10fa62f800291a02f5e14311eec1a14d18057b.tar.bz2
openbsd-4c10fa62f800291a02f5e14311eec1a14d18057b.zip
Mark read/write registers as non-overlapping for bn_qwmulw_{addqw_,}addw()
This does not cause an issue currently, however if called differently to their current usage, it can lead to an input being overwritten and incorrect results being generated.
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/bn/arch/aarch64/bn_arch.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/lib/libcrypto/bn/arch/aarch64/bn_arch.h b/src/lib/libcrypto/bn/arch/aarch64/bn_arch.h
index 66de3682d4..fe6f8a3aea 100644
--- a/src/lib/libcrypto/bn/arch/aarch64/bn_arch.h
+++ b/src/lib/libcrypto/bn/arch/aarch64/bn_arch.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: bn_arch.h,v 1.12 2023/06/21 07:56:43 jsing Exp $ */ 1/* $OpenBSD: bn_arch.h,v 1.13 2023/07/24 10:21:29 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2023 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2023 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -241,7 +241,7 @@ bn_qwmulw_addw(BN_ULONG a3, BN_ULONG a2, BN_ULONG a1, BN_ULONG a0, BN_ULONG b,
241 "mul %[c], %[a3], %[b] \n" 241 "mul %[c], %[a3], %[b] \n"
242 "adcs %[r3], %[r3], %[c] \n" 242 "adcs %[r3], %[r3], %[c] \n"
243 "adc %[r4], %[r4], xzr \n" 243 "adc %[r4], %[r4], xzr \n"
244 : [c]"+r"(c), [r4]"=&r"(r4), [r3]"=&r"(r3), [r2]"=&r"(r2), 244 : [c]"+&r"(c), [r4]"=&r"(r4), [r3]"=&r"(r3), [r2]"=&r"(r2),
245 [r1]"=&r"(r1), [r0]"=&r"(r0) 245 [r1]"=&r"(r1), [r0]"=&r"(r0)
246 : [a3]"r"(a3), [a2]"r"(a2), [a1]"r"(a1), [a0]"r"(a0), [b]"r"(b) 246 : [a3]"r"(a3), [a2]"r"(a2), [a1]"r"(a1), [a0]"r"(a0), [b]"r"(b)
247 : "cc"); 247 : "cc");
@@ -282,7 +282,7 @@ bn_qwmulw_addqw_addw(BN_ULONG a3, BN_ULONG a2, BN_ULONG a1, BN_ULONG a0,
282 "adcs %[r2], %[r2], %[c2] \n" 282 "adcs %[r2], %[r2], %[c2] \n"
283 "adcs %[r3], %[r3], %[c3] \n" 283 "adcs %[r3], %[r3], %[c3] \n"
284 "adc %[r4], %[r4], xzr \n" 284 "adc %[r4], %[r4], xzr \n"
285 : [d]"+r"(d), [r4]"=&r"(r4), [r3]"=&r"(r3), [r2]"=&r"(r2), 285 : [d]"+&r"(d), [r4]"=&r"(r4), [r3]"=&r"(r3), [r2]"=&r"(r2),
286 [r1]"=&r"(r1), [r0]"=&r"(r0) 286 [r1]"=&r"(r1), [r0]"=&r"(r0)
287 : [a3]"r"(a3), [a2]"r"(a2), [a1]"r"(a1), [a0]"r"(a0), [b]"r"(b), 287 : [a3]"r"(a3), [a2]"r"(a2), [a1]"r"(a1), [a0]"r"(a0), [b]"r"(b),
288 [c3]"r"(c3), [c2]"r"(c2), [c1]"r"(c1), [c0]"r"(c0) 288 [c3]"r"(c3), [c2]"r"(c2), [c1]"r"(c1), [c0]"r"(c0)