diff options
author | jsing <> | 2023-07-24 10:21:29 +0000 |
---|---|---|
committer | jsing <> | 2023-07-24 10:21:29 +0000 |
commit | 8b06006d10486de29fa06b2d48e75fc2aaed17eb (patch) | |
tree | 0dbd9fa528deda0e3942a21625262815f38e590f /src/lib | |
parent | 16ea0c76b649e30b6efab9849a469e34ec1929b8 (diff) | |
download | openbsd-8b06006d10486de29fa06b2d48e75fc2aaed17eb.tar.gz openbsd-8b06006d10486de29fa06b2d48e75fc2aaed17eb.tar.bz2 openbsd-8b06006d10486de29fa06b2d48e75fc2aaed17eb.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/lib')
-rw-r--r-- | src/lib/libcrypto/bn/arch/aarch64/bn_arch.h | 6 |
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) |