summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorschwarze <>2021-11-23 11:10:51 +0000
committerschwarze <>2021-11-23 11:10:51 +0000
commit3af9d78c8b9e9f755a890250766ee91b89d49302 (patch)
treea8b05357992a2de0b2bf41411229a29f2401d2b0 /src/lib
parent2bdbde31a4bf50cc95d94889220a599f78e08415 (diff)
downloadopenbsd-3af9d78c8b9e9f755a890250766ee91b89d49302.tar.gz
openbsd-3af9d78c8b9e9f755a890250766ee91b89d49302.tar.bz2
openbsd-3af9d78c8b9e9f755a890250766ee91b89d49302.zip
re-align these copies of the a2i_*(3) code with f_string.c rev. 1.19
to fix the same double-counting of the backslash and to make the parsing stricter in the same way; OK tb@
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/asn1/f_enum.c20
-rw-r--r--src/lib/libcrypto/asn1/f_int.c20
2 files changed, 12 insertions, 28 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;
diff --git a/src/lib/libcrypto/asn1/f_int.c b/src/lib/libcrypto/asn1/f_int.c
index d03fafe87d..8ce9d20d5f 100644
--- a/src/lib/libcrypto/asn1/f_int.c
+++ b/src/lib/libcrypto/asn1/f_int.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: f_int.c,v 1.20 2018/05/13 13:48:08 jsing Exp $ */ 1/* $OpenBSD: f_int.c,v 1.21 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 *
@@ -126,19 +126,12 @@ a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size)
126 buf[--i] = '\0'; 126 buf[--i] = '\0';
127 if (i == 0) 127 if (i == 0)
128 goto err_sl; 128 goto err_sl;
129 again = (buf[i - 1] == '\\'); 129 if (buf[i - 1] == '\\') {
130 130 i--;
131 for (j = 0; j < i; j++) { 131 again = 1;
132 if (!(((buf[j] >= '0') && (buf[j] <= '9')) || 132 } else
133 ((buf[j] >= 'a') && (buf[j] <= 'f')) || 133 again = 0;
134 ((buf[j] >= 'A') && (buf[j] <= 'F')))) {
135 i = j;
136 break;
137 }
138 }
139 buf[i] = '\0'; 134 buf[i] = '\0';
140 /* We have now cleared all the crap off the end of the
141 * line */
142 if (i < 2) 135 if (i < 2)
143 goto err_sl; 136 goto err_sl;
144 137
@@ -151,7 +144,6 @@ a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size)
151 } 144 }
152 } 145 }
153 k = 0; 146 k = 0;
154 i -= again;
155 if (i % 2 != 0) { 147 if (i % 2 != 0) {
156 ASN1error(ASN1_R_ODD_NUMBER_OF_CHARS); 148 ASN1error(ASN1_R_ODD_NUMBER_OF_CHARS);
157 goto err; 149 goto err;