summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libcrypto/asn1/tasn_dec.c11
-rw-r--r--src/lib/libcrypto/asn1/tasn_enc.c10
2 files changed, 4 insertions, 17 deletions
diff --git a/src/lib/libcrypto/asn1/tasn_dec.c b/src/lib/libcrypto/asn1/tasn_dec.c
index 0c2357c2bb..ac59cc7e21 100644
--- a/src/lib/libcrypto/asn1/tasn_dec.c
+++ b/src/lib/libcrypto/asn1/tasn_dec.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tasn_dec.c,v 1.84 2022/11/26 16:08:50 tb Exp $ */ 1/* $OpenBSD: tasn_dec.c,v 1.85 2023/04/28 17:59:53 job Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
@@ -736,7 +736,7 @@ static int
736asn1_item_d2i_sequence(ASN1_VALUE **pval, CBS *cbs, const ASN1_ITEM *it, 736asn1_item_d2i_sequence(ASN1_VALUE **pval, CBS *cbs, const ASN1_ITEM *it,
737 int tag_number, int tag_class, int optional, int depth) 737 int tag_number, int tag_class, int optional, int depth)
738{ 738{
739 CBS cbs_seq, cbs_seq_content, cbs_object; 739 CBS cbs_seq, cbs_seq_content;
740 int constructed, indefinite, optional_field; 740 int constructed, indefinite, optional_field;
741 const ASN1_TEMPLATE *errat = NULL; 741 const ASN1_TEMPLATE *errat = NULL;
742 const ASN1_TEMPLATE *seqat, *at; 742 const ASN1_TEMPLATE *seqat, *at;
@@ -878,14 +878,9 @@ asn1_item_d2i_sequence(ASN1_VALUE **pval, CBS *cbs, const ASN1_ITEM *it,
878 ASN1_template_free(pseqval, seqat); 878 ASN1_template_free(pseqval, seqat);
879 } 879 }
880 880
881 if (!CBS_get_bytes(cbs, &cbs_object, CBS_offset(&cbs_seq))) 881 if (!CBS_skip(cbs, CBS_offset(&cbs_seq)))
882 goto err; 882 goto err;
883 883
884 if (!asn1_enc_save(&aseq, &cbs_object, it)) {
885 ASN1error(ERR_R_MALLOC_FAILURE);
886 goto err;
887 }
888
889 if (asn1_cb != NULL && !asn1_cb(ASN1_OP_D2I_POST, &aseq, it, NULL)) { 884 if (asn1_cb != NULL && !asn1_cb(ASN1_OP_D2I_POST, &aseq, it, NULL)) {
890 ASN1error(ASN1_R_AUX_ERROR); 885 ASN1error(ASN1_R_AUX_ERROR);
891 goto err; 886 goto err;
diff --git a/src/lib/libcrypto/asn1/tasn_enc.c b/src/lib/libcrypto/asn1/tasn_enc.c
index 6e0524c39f..430e8e1e8e 100644
--- a/src/lib/libcrypto/asn1/tasn_enc.c
+++ b/src/lib/libcrypto/asn1/tasn_enc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tasn_enc.c,v 1.29 2023/03/06 12:00:27 tb Exp $ */ 1/* $OpenBSD: tasn_enc.c,v 1.30 2023/04/28 17:59:53 job Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
@@ -210,14 +210,6 @@ ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out, const ASN1_ITEM *it,
210 /* fall through */ 210 /* fall through */
211 211
212 case ASN1_ITYPE_SEQUENCE: 212 case ASN1_ITYPE_SEQUENCE:
213 i = asn1_enc_restore(&seqcontlen, out, pval, it);
214 /* An error occurred */
215 if (i < 0)
216 return 0;
217 /* We have a valid cached encoding... */
218 if (i > 0)
219 return seqcontlen;
220 /* Otherwise carry on */
221 seqcontlen = 0; 213 seqcontlen = 0;
222 /* If no IMPLICIT tagging set to SEQUENCE, UNIVERSAL */ 214 /* If no IMPLICIT tagging set to SEQUENCE, UNIVERSAL */
223 if (tag == -1) { 215 if (tag == -1) {