diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/asn1/a_enum.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/lib/libcrypto/asn1/a_enum.c b/src/lib/libcrypto/asn1/a_enum.c index 3b6cd9f954..b0b851028a 100644 --- a/src/lib/libcrypto/asn1/a_enum.c +++ b/src/lib/libcrypto/asn1/a_enum.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: a_enum.c,v 1.25 2022/07/09 14:46:43 tb Exp $ */ | 1 | /* $OpenBSD: a_enum.c,v 1.26 2022/08/10 12:06:28 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -126,14 +126,18 @@ ASN1_ENUMERATED_get_int64(int64_t *out_val, const ASN1_ENUMERATED *aenum) | |||
| 126 | int | 126 | int |
| 127 | ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *aenum, int64_t val) | 127 | ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *aenum, int64_t val) |
| 128 | { | 128 | { |
| 129 | uint64_t uval; | ||
| 130 | |||
| 129 | asn1_aenum_clear(aenum); | 131 | asn1_aenum_clear(aenum); |
| 130 | 132 | ||
| 133 | uval = (uint64_t)val; | ||
| 134 | |||
| 131 | if (val < 0) { | 135 | if (val < 0) { |
| 132 | aenum->type = V_ASN1_NEG_ENUMERATED; | 136 | aenum->type = V_ASN1_NEG_ENUMERATED; |
| 133 | val = -val; | 137 | uval = -uval; |
| 134 | } | 138 | } |
| 135 | 139 | ||
| 136 | return asn1_aint_set_uint64((uint64_t)val, &aenum->data, &aenum->length); | 140 | return asn1_aint_set_uint64(uval, &aenum->data, &aenum->length); |
| 137 | } | 141 | } |
| 138 | 142 | ||
| 139 | long | 143 | long |
