On Fri, Aug 16, 2024 at 01:22:39PM +0200, Daniel Kiper wrote:
> On Fri, Jun 28, 2024 at 04:18:53PM +0800, Gary Lin via Grub-devel wrote:
> > From: Daniel Axtens <d...@axtens.net>
> >
> > Import tests from libtasn1 that don't use functionality we don't
> > import. This test module is integrated into functional_test so that the
> 
> Would not be it easier if you say: Import tests from libtasn1 that use
> functionality we import?
> 
Will update the description in the next version.

> > user can run the test in grub shell.
> >
> > This doesn't test the full decoder but that will be exercised in
> > test suites for coming patch sets.
> >
> > Add testcase target in accordance with
> > 5e10be48e5 tests: Add check-native and check-nonnative make targets
> >
> > Cc: Vladimir Serbinenko <phco...@gmail.com>
> > Signed-off-by: Daniel Axtens <d...@axtens.net>
> > Signed-off-by: Gary Lin <g...@suse.com>
> > ---
> >  Makefile.util.def                     |  6 ++++
> >  autogen.sh                            | 10 +++++-
> >  grub-core/Makefile.core.def           | 15 ++++++++
> >  grub-core/tests/asn1/asn1_test.c      | 49 +++++++++++++++++++++++++++
> >  grub-core/tests/asn1/asn1_test.h      | 44 ++++++++++++++++++++++++
> >  grub-core/tests/lib/functional_test.c |  1 +
> >  tests/asn1_test.in                    | 11 ++++++
> >  7 files changed, 135 insertions(+), 1 deletion(-)
> >  create mode 100644 grub-core/tests/asn1/asn1_test.c
> >  create mode 100644 grub-core/tests/asn1/asn1_test.h
> >  create mode 100644 tests/asn1_test.in
> >
> > diff --git a/Makefile.util.def b/Makefile.util.def
> > index 0f74a1680..fe70cf9bd 100644
> > --- a/Makefile.util.def
> > +++ b/Makefile.util.def
> > @@ -1257,6 +1257,12 @@ script = {
> >    common = tests/luks2_test.in;
> >  };
> >
> > +script = {
> > +  testcase = native;
> > +  name = asn1_test;
> > +  common = tests/asn1_test.in;
> > +};
> > +
> >  program = {
> >    testcase = native;
> >    name = example_unit_test;
> > diff --git a/autogen.sh b/autogen.sh
> > index 3cccd76c0..e464bac5e 100755
> > --- a/autogen.sh
> > +++ b/autogen.sh
> > @@ -60,12 +60,20 @@ mkdir -p grub-core/lib/libtasn1-grub/lib
> >  cp grub-core/lib/libtasn1/lib/*.[ch] grub-core/lib/libtasn1-grub/lib
> >  cp grub-core/lib/libtasn1/libtasn1.h grub-core/lib/libtasn1-grub/
> >
> > +if [ -d grub-core/tests/asn1/tests ]; then
> > +  rm -rf grub-core/tests/asn1/tests
> > +fi
> > +
> > +mkdir grub-core/tests/asn1/tests
> > +cp grub-core/lib/libtasn1/tests/*.[ch] grub-core/tests/asn1/tests
> > +
> >  for patch in \
> >     0001-libtasn1-disable-code-not-needed-in-grub.patch \
> >     0002-libtasn1-use-bound-checked-_asn1_str_cat.patch \
> >     0003-libtasn1-adjust-the-header-paths-in-libtasn1.h.patch \
> >     0004-libtasn1-Use-grub_divmod64-for-division.patch \
> > -   0005-libtasn1-fix-the-potential-buffer-overrun.patch ; do
> > +   0005-libtasn1-fix-the-potential-buffer-overrun.patch \
> > +   0006-asn1_test-changes-for-grub-compatibility.patch ; do
> >    patch -p1 -i grub-core/lib/libtasn1-patches/$patch
> >  done
> >
> > diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
> > index 01a05c9b3..fd6dfa515 100644
> > --- a/grub-core/Makefile.core.def
> > +++ b/grub-core/Makefile.core.def
> > @@ -2621,3 +2621,18 @@ module = {
> >    /* -Wno-type-limits comes from configure.ac of libtasn1 */
> >    cppflags = '$(CPPFLAGS_POSIX) $(CPPFLAGS_GNULIB) 
> > -I$(srcdir)/lib/libtasn1-grub -I$(srcdir)/lib/libtasn1-grub/lib 
> > -Wno-type-limits';
> >  };
> > +
> > +module = {
> > +  name = asn1_test;
> > +  common = tests/asn1/tests/CVE-2018-1000654.c;
> > +  common = tests/asn1/tests/object-id-decoding.c;
> > +  common = tests/asn1/tests/object-id-encoding.c;
> > +  common = tests/asn1/tests/octet-string.c;
> > +  common = tests/asn1/tests/reproducers.c;
> > +  common = tests/asn1/tests/Test_overflow.c;
> > +  common = tests/asn1/tests/Test_simple.c;
> > +  common = tests/asn1/tests/Test_strings.c;
> > +  common = tests/asn1/asn1_test.c;
> > +  cflags = '-Wno-uninitialized';
> > +  cppflags = '-I$(srcdir)/lib/libtasn1-grub -I$(srcdir)/tests/asn1/';
> > +};
> > diff --git a/grub-core/tests/asn1/asn1_test.c 
> > b/grub-core/tests/asn1/asn1_test.c
> > new file mode 100644
> > index 000000000..2a2cd02d1
> > --- /dev/null
> > +++ b/grub-core/tests/asn1/asn1_test.c
> > @@ -0,0 +1,49 @@
> > +/*
> > + *  GRUB  --  GRand Unified Bootloader
> > + *  Copyright (C) 2020 IBM Corporation
> > + *
> > + *  GRUB is free software: you can redistribute it and/or modify
> > + *  it under the terms of the GNU General Public License as published by
> > + *  the Free Software Foundation, either version 3 of the License, or
> > + *  (at your option) any later version.
> > + *
> > + *  GRUB is distributed in the hope that it will be useful,
> > + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + *  GNU General Public License for more details.
> > + *
> > + *  You should have received a copy of the GNU General Public License
> > + *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
> > + */
> > +
> > +#include <grub/test.h>
> > +#include <grub/dl.h>
> > +#include "asn1_test.h"
> > +
> > +/*
> > + * libtasn1 tests - from which this is derived - are provided under GPL3+.
> > + */
> > +GRUB_MOD_LICENSE ("GPLv3+");
> > +
> > +static void
> > +asn1_test (void)
> > +{
> > +  grub_test_assert (test_CVE_2018_1000654 () == 0, "CVE-2018-1000654 test 
> > failed");
> > +
> > +  grub_test_assert (test_object_id_encoding () == 0, "ASN.1 object ID 
> > encoding test failed");
> > +
> > +  grub_test_assert (test_object_id_decoding () == 0, "ASN.1 object ID 
> > decoding test failed");
> > +
> > +  grub_test_assert (test_octet_string () == 0, "ASN.1 octet string test 
> > failed");
> > +
> > +  grub_test_assert (test_overflow () == 0, "ASN.1 overflow test failed");
> > +
> > +  grub_test_assert (test_reproducers () == 0, "ASN.1 reproducers test 
> > failed");
> > +
> > +  grub_test_assert (test_simple () == 0, "ASN.1 simple test failed");
> > +
> > +  grub_test_assert (test_strings () == 0, "ASN.1 strings test fail" );
> > +}
> > +
> > +/* Register asn1_test method as a functional test.  */
> > +GRUB_FUNCTIONAL_TEST (asn1_test, asn1_test);
> > diff --git a/grub-core/tests/asn1/asn1_test.h 
> > b/grub-core/tests/asn1/asn1_test.h
> > new file mode 100644
> > index 000000000..499e1cfc4
> > --- /dev/null
> > +++ b/grub-core/tests/asn1/asn1_test.h
> > @@ -0,0 +1,44 @@
> > +/*
> > + *  GRUB  --  GRand Unified Bootloader
> > + *  Copyright (C) 2020 IBM Corporation
> > + *
> > + *  GRUB is free software: you can redistribute it and/or modify
> > + *  it under the terms of the GNU General Public License as published by
> > + *  the Free Software Foundation, either version 3 of the License, or
> > + *  (at your option) any later version.
> > + *
> > + *  GRUB is distributed in the hope that it will be useful,
> > + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + *  GNU General Public License for more details.
> > + *
> > + *  You should have received a copy of the GNU General Public License
> > + *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
> > + */
> > +
> > +#ifndef LIBTASN1_WRAP_TESTS_H
> > +#define LIBTASN1_WRAP_TESTS_H
> > +
> > +#include <libtasn1.h>
> > +#include <grub/err.h>
> > +#include <grub/mm.h>
> > +#include <grub/misc.h>
> > +#include <grub/types.h>
> > +
> > +int test_CVE_2018_1000654 (void);
> > +
> > +int test_object_id_encoding (void);
> > +
> > +int test_object_id_decoding (void);
> > +
> > +int test_octet_string (void);
> > +
> > +int test_overflow (void);
> > +
> > +int test_reproducers (void);
> > +
> > +int test_simple (void);
> > +
> > +int test_strings (void);
> 
> Please prefix all these declarations with "extern".
> 
No problem.

> If you do that you can add my RB.
Thanks! 

Gary Lin

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to