diff options
author | schwarze <> | 2021-11-23 11:10:51 +0000 |
---|---|---|
committer | schwarze <> | 2021-11-23 11:10:51 +0000 |
commit | 3af9d78c8b9e9f755a890250766ee91b89d49302 (patch) | |
tree | a8b05357992a2de0b2bf41411229a29f2401d2b0 /src/lib | |
parent | 2bdbde31a4bf50cc95d94889220a599f78e08415 (diff) | |
download | openbsd-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.c | 20 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/f_int.c | 20 |
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; |