grub-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]