Decode via c2i_ASN1_INTEGER_cbs() from asn1_ex_c2i().
authorjsing <jsing@openbsd.org>
Wed, 27 Apr 2022 17:56:13 +0000 (17:56 +0000)
committerjsing <jsing@openbsd.org>
Wed, 27 Apr 2022 17:56:13 +0000 (17:56 +0000)
lib/libcrypto/asn1/asn1_locl.h
lib/libcrypto/asn1/tasn_dec.c

index ae9445c..4d4c7a3 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: asn1_locl.h,v 1.26 2022/04/26 20:00:18 jsing Exp $ */
+/* $OpenBSD: asn1_locl.h,v 1.27 2022/04/27 17:56:13 jsing Exp $ */
 /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
  * project 2006.
  */
@@ -203,6 +203,8 @@ int asn1_tag2charwidth(int tag);
 
 int c2i_ASN1_BIT_STRING_cbs(ASN1_BIT_STRING **out_abs, CBS *cbs);
 
+int c2i_ASN1_INTEGER_cbs(ASN1_INTEGER **out_aint, CBS *cbs);
+
 int c2i_ASN1_OBJECT_cbs(ASN1_OBJECT **out_aobj, CBS *content);
 int i2t_ASN1_OBJECT_internal(const ASN1_OBJECT *aobj, char *buf, int buf_len,
     int no_name);
index 3936ecb..b88c5f2 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tasn_dec.c,v 1.52 2022/04/27 17:28:34 jsing Exp $ */
+/* $OpenBSD: tasn_dec.c,v 1.53 2022/04/27 17:56:13 jsing Exp $ */
 /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
  * project 2000.
  */
@@ -774,7 +774,6 @@ asn1_ex_c2i(ASN1_VALUE **pval, CBS *content, int utype, const ASN1_ITEM *it)
        ASN1_TYPE *typ = NULL;
        ASN1_INTEGER **tint;
        ASN1_BOOLEAN *tbool;
-       const uint8_t *p;
        uint8_t u8val;
        int ret = 0;
 
@@ -840,8 +839,7 @@ asn1_ex_c2i(ASN1_VALUE **pval, CBS *content, int utype, const ASN1_ITEM *it)
        case V_ASN1_INTEGER:
        case V_ASN1_ENUMERATED:
                tint = (ASN1_INTEGER **)pval;
-               p = CBS_data(content);
-               if (!c2i_ASN1_INTEGER(tint, &p, CBS_len(content)))
+               if (!c2i_ASN1_INTEGER_cbs(tint, content))
                        goto err;
                /* Fixup type to match the expected form */
                (*tint)->type = utype | ((*tint)->type & V_ASN1_NEG);