diff options
Diffstat (limited to 'src/lib/libcrypto/asn1/f_enum.c')
-rw-r--r-- | src/lib/libcrypto/asn1/f_enum.c | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/src/lib/libcrypto/asn1/f_enum.c b/src/lib/libcrypto/asn1/f_enum.c index cc4b7dfc91..e525670572 100644 --- a/src/lib/libcrypto/asn1/f_enum.c +++ b/src/lib/libcrypto/asn1/f_enum.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: f_enum.c,v 1.16 2018/04/25 11:48:21 tb Exp $ */ | 1 | /* $OpenBSD: f_enum.c,v 1.17 2021/11/23 11:10:51 schwarze 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 | * |
@@ -123,19 +123,12 @@ a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size) | |||
123 | buf[--i] = '\0'; | 123 | buf[--i] = '\0'; |
124 | if (i == 0) | 124 | if (i == 0) |
125 | goto err_sl; | 125 | goto err_sl; |
126 | again = (buf[i - 1] == '\\'); | 126 | if (buf[i - 1] == '\\') { |
127 | 127 | i--; | |
128 | for (j = 0; j < i; j++) { | 128 | again = 1; |
129 | if (!(((buf[j] >= '0') && (buf[j] <= '9')) || | 129 | } else |
130 | ((buf[j] >= 'a') && (buf[j] <= 'f')) || | 130 | again = 0; |
131 | ((buf[j] >= 'A') && (buf[j] <= 'F')))) { | ||
132 | i = j; | ||
133 | break; | ||
134 | } | ||
135 | } | ||
136 | buf[i] = '\0'; | 131 | buf[i] = '\0'; |
137 | /* We have now cleared all the crap off the end of the | ||
138 | * line */ | ||
139 | if (i < 2) | 132 | if (i < 2) |
140 | goto err_sl; | 133 | goto err_sl; |
141 | 134 | ||
@@ -148,7 +141,6 @@ a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size) | |||
148 | } | 141 | } |
149 | } | 142 | } |
150 | k = 0; | 143 | k = 0; |
151 | i -= again; | ||
152 | if (i % 2 != 0) { | 144 | if (i % 2 != 0) { |
153 | ASN1error(ASN1_R_ODD_NUMBER_OF_CHARS); | 145 | ASN1error(ASN1_R_ODD_NUMBER_OF_CHARS); |
154 | goto err; | 146 | goto err; |