summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libcrypto/asn1/f_string.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/src/lib/libcrypto/asn1/f_string.c b/src/lib/libcrypto/asn1/f_string.c
index af17f43e1d..b34343db39 100644
--- a/src/lib/libcrypto/asn1/f_string.c
+++ b/src/lib/libcrypto/asn1/f_string.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: f_string.c,v 1.18 2018/04/25 11:48:21 tb Exp $ */ 1/* $OpenBSD: f_string.c,v 1.19 2021/11/19 09:58:41 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 *
@@ -125,26 +125,18 @@ a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size)
125 buf[--i] = '\0'; 125 buf[--i] = '\0';
126 if (i == 0) 126 if (i == 0)
127 goto err_sl; 127 goto err_sl;
128 again = (buf[i - 1] == '\\'); 128 if (buf[i - 1] == '\\') {
129 129 i--;
130 for (j = i - 1; j > 0; j--) { 130 again = 1;
131 if (!(((buf[j] >= '0') && (buf[j] <= '9')) || 131 } else
132 ((buf[j] >= 'a') && (buf[j] <= 'f')) || 132 again = 0;
133 ((buf[j] >= 'A') && (buf[j] <= 'F')))) {
134 i = j;
135 break;
136 }
137 }
138 buf[i] = '\0'; 133 buf[i] = '\0';
139 /* We have now cleared all the crap off the end of the
140 * line */
141 if (i < 2) 134 if (i < 2)
142 goto err_sl; 135 goto err_sl;
143 136
144 bufp = (unsigned char *)buf; 137 bufp = (unsigned char *)buf;
145 138
146 k = 0; 139 k = 0;
147 i -= again;
148 if (i % 2 != 0) { 140 if (i % 2 != 0) {
149 ASN1error(ASN1_R_ODD_NUMBER_OF_CHARS); 141 ASN1error(ASN1_R_ODD_NUMBER_OF_CHARS);
150 goto err; 142 goto err;