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