On Mon, Dec 13, 2021 at 10:56:15AM -0700, Joel Sing wrote:
> CVSROOT:      /cvs
> Module name:  src
> Changes by:   [email protected]   2021/12/13 10:56:15
> 
> Modified files:
>       lib/libcrypto  : Makefile 
>       lib/libcrypto/asn1: tasn_typ.c 
> Removed files:
>       lib/libcrypto/asn1: a_bool.c 
> 
> Log message:
> Clean up d2i_ASN1_BOOLEAN() and i2d_ASN1_BOOLEAN().
> 
> Convert these to templated ASN.1, given we already have ASN1_BOOLEAN_it.
> 
> ok inoguchi@ tb@
> 

It looks like the new d2i_ASN1_BOOLEAN() is broken on several archs, see:

http://bluhm.genua.de/regress/results/2021-12-22T10%3A17%3A02Z/logs/lib/libcrypto/asn1/make.log
http://bluhm.genua.de/regress/results/2021-12-21T02%3A17%3A18Z/logs/lib/libcrypto/asn1/make.log

The diff below reverts the previous commit which fixes the test.

ok to backout?

diff --git lib/libcrypto/Makefile lib/libcrypto/Makefile
index 7279d5a1815..e23469ab158 100644
--- lib/libcrypto/Makefile
+++ lib/libcrypto/Makefile
@@ -62,7 +62,7 @@ SRCS+= t_req.c t_x509.c t_x509a.c t_crl.c t_pkey.c t_spki.c
 SRCS+= tasn_new.c tasn_fre.c tasn_enc.c tasn_dec.c tasn_utl.c tasn_typ.c
 SRCS+= tasn_prn.c ameth_lib.c
 SRCS+= n_pkey.c
-SRCS+= x_pkey.c x_exten.c bio_asn1.c bio_ndef.c asn_mime.c
+SRCS+= x_pkey.c a_bool.c x_exten.c bio_asn1.c bio_ndef.c asn_mime.c
 SRCS+= asn1_gen.c asn1_par.c asn1_old_lib.c asn1_err.c a_strnid.c
 SRCS+= evp_asn1.c asn_pack.c p5_pbe.c p5_pbev2.c p8_pkey.c asn_moid.c
 SRCS+= a_time_tm.c asn1_types.c
diff --git lib/libcrypto/asn1/a_bool.c lib/libcrypto/asn1/a_bool.c
new file mode 100644
index 00000000000..e8469bec650
--- /dev/null
+++ lib/libcrypto/asn1/a_bool.c
@@ -0,0 +1,115 @@
+/* $OpenBSD: a_bool.c,v 1.8 2017/01/29 17:49:22 beck Exp $ */
+/* Copyright (C) 1995-1998 Eric Young ([email protected])
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young ([email protected]).
+ * The implementation was written so as to conform with Netscapes SSL.
+ *
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson ([email protected]).
+ *
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young ([email protected])"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from
+ *    the apps directory (application code) you must include an 
acknowledgement:
+ *    "This product includes software written by Tim Hudson 
([email protected])"
+ *
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+#include <stdio.h>
+
+#include <openssl/asn1t.h>
+#include <openssl/err.h>
+
+int
+i2d_ASN1_BOOLEAN(int a, unsigned char **pp)
+{
+       int r;
+       unsigned char *p;
+
+       r = ASN1_object_size(0, 1, V_ASN1_BOOLEAN);
+       if (pp == NULL)
+               return (r);
+       p = *pp;
+
+       ASN1_put_object(&p, 0, 1, V_ASN1_BOOLEAN, V_ASN1_UNIVERSAL);
+       *(p++) = (unsigned char)a;
+       *pp = p;
+       return (r);
+}
+
+int
+d2i_ASN1_BOOLEAN(int *a, const unsigned char **pp, long length)
+{
+       int ret = -1;
+       const unsigned char *p;
+       long len;
+       int inf, tag, xclass;
+       int i = 0;
+
+       p = *pp;
+       inf = ASN1_get_object(&p, &len, &tag, &xclass, length);
+       if (inf & 0x80) {
+               i = ASN1_R_BAD_OBJECT_HEADER;
+               goto err;
+       }
+
+       if (tag != V_ASN1_BOOLEAN) {
+               i = ASN1_R_EXPECTING_A_BOOLEAN;
+               goto err;
+       }
+
+       if (len != 1) {
+               i = ASN1_R_BOOLEAN_IS_WRONG_LENGTH;
+               goto err;
+       }
+       ret = (int)*(p++);
+       if (a != NULL)
+               (*a) = ret;
+       *pp = p;
+       return (ret);
+
+err:
+       ASN1error(i);
+       return (ret);
+}
diff --git lib/libcrypto/asn1/tasn_typ.c lib/libcrypto/asn1/tasn_typ.c
index 060ea27fb9e..20fdf587c0c 100644
--- lib/libcrypto/asn1/tasn_typ.c
+++ lib/libcrypto/asn1/tasn_typ.c
@@ -712,26 +712,6 @@ const ASN1_ITEM ASN1_BOOLEAN_it = {
        .sname = "ASN1_BOOLEAN",
 };
 
-int
-i2d_ASN1_BOOLEAN(int a, unsigned char **out)
-{
-       return ASN1_item_i2d((ASN1_VALUE *)(long)(a), out, &ASN1_BOOLEAN_it);
-}
-
-int
-d2i_ASN1_BOOLEAN(int *a, const unsigned char **in, long len)
-{
-       ASN1_BOOLEAN abool;
-
-       if (ASN1_item_d2i((ASN1_VALUE **)&abool, in, len, &ASN1_BOOLEAN_it) == 
NULL)
-               return -1;
-
-       if (a != NULL)
-               *a = abool;
-
-       return abool;
-}
-
 const ASN1_ITEM ASN1_TBOOLEAN_it = {
        .itype = ASN1_ITYPE_PRIMITIVE,
        .utype = V_ASN1_BOOLEAN,

Reply via email to