summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2019-04-20 11:13:15 +0000
committerjsing <>2019-04-20 11:13:15 +0000
commit8fe7e4af1deb4047204d1a997cdc4a3c36010372 (patch)
treebfdf5ef03362ac1bc55092fe4bd3d426b74663cb
parent473d58312ced958df3e2dc600b4bae32f0d1c725 (diff)
downloadopenbsd-8fe7e4af1deb4047204d1a997cdc4a3c36010372.tar.gz
openbsd-8fe7e4af1deb4047204d1a997cdc4a3c36010372.tar.bz2
openbsd-8fe7e4af1deb4047204d1a997cdc4a3c36010372.zip
Avoid undefined behaviour that results from negating a signed long with
minimum value. Fixes oss-fuzz #14354. ok beck@ bcook@ tb@
Diffstat (limited to '')
-rw-r--r--src/lib/libcrypto/asn1/x_long.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lib/libcrypto/asn1/x_long.c b/src/lib/libcrypto/asn1/x_long.c
index 8b11f14217..ff72338cc0 100644
--- a/src/lib/libcrypto/asn1/x_long.c
+++ b/src/lib/libcrypto/asn1/x_long.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_long.c,v 1.15 2019/04/15 17:46:02 jsing Exp $ */ 1/* $OpenBSD: x_long.c,v 1.16 2019/04/20 11:13:15 jsing Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
@@ -142,7 +142,7 @@ long_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype,
142 * octet is set. 142 * octet is set.
143 */ 143 */
144 if (ltmp < 0) 144 if (ltmp < 0)
145 utmp = -ltmp - 1; 145 utmp = -(ltmp + 1);
146 else 146 else
147 utmp = ltmp; 147 utmp = ltmp;
148 clen = BN_num_bits_word(utmp); 148 clen = BN_num_bits_word(utmp);