summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libcrypto/asn1/tasn_enc.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/lib/libcrypto/asn1/tasn_enc.c b/src/lib/libcrypto/asn1/tasn_enc.c
index ee2320f856..d42c5ea369 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.24 2022/01/07 11:13:54 tb Exp $ */ 1/* $OpenBSD: tasn_enc.c,v 1.25 2022/08/20 17:55:08 jsing 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 */
@@ -529,6 +529,10 @@ asn1_i2d_ex_primitive(ASN1_VALUE **pval, unsigned char **out,
529 len = 0; 529 len = 0;
530 } 530 }
531 531
532 /* Treat any other negative value as an error. */
533 if (len < 0)
534 return -1;
535
532 /* If not implicitly tagged get tag from underlying type */ 536 /* If not implicitly tagged get tag from underlying type */
533 if (tag == -1) 537 if (tag == -1)
534 tag = utype; 538 tag = utype;
@@ -537,7 +541,8 @@ asn1_i2d_ex_primitive(ASN1_VALUE **pval, unsigned char **out,
537 if (out) { 541 if (out) {
538 if (usetag) 542 if (usetag)
539 ASN1_put_object(out, ndef, len, tag, aclass); 543 ASN1_put_object(out, ndef, len, tag, aclass);
540 asn1_ex_i2c(pval, *out, &utype, it); 544 if (asn1_ex_i2c(pval, *out, &utype, it) != len)
545 return -1;
541 if (ndef) 546 if (ndef)
542 ASN1_put_eoc(out); 547 ASN1_put_eoc(out);
543 else 548 else