[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v18 10/25] asn1_test: test module for libtasn1
From: |
Daniel Kiper |
Subject: |
Re: [PATCH v18 10/25] asn1_test: test module for libtasn1 |
Date: |
Fri, 16 Aug 2024 13:22:39 +0200 |
User-agent: |
NeoMutt/20170113 (1.7.2) |
On Fri, Jun 28, 2024 at 04:18:53PM +0800, Gary Lin via Grub-devel wrote:
> From: Daniel Axtens <dja@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?
> 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 <phcoder@gmail.com>
> Signed-off-by: Daniel Axtens <dja@axtens.net>
> Signed-off-by: Gary Lin <glin@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".
If you do that you can add my RB.
Daniel
- Re: [PATCH v18 10/25] asn1_test: test module for libtasn1,
Daniel Kiper <=