[OE-core] [PATCH] nettle: fix ptest failure
Richard Purdie
richard.purdie at linuxfoundation.org
Fri Apr 12 21:57:53 UTC 2019
On Fri, 2019-04-12 at 11:27 +0800, mingli.yu at windriver.com wrote:
> From: Mingli Yu <Mingli.Yu at windriver.com>
>
> Remove dlopen-test.patch which originally used
> to fix the test dlopen-test, but autually the
> patch didn't resolve the issue as dlopen-test.patch
> supposes the file /usr/lib/libnettle.so exists.
> Instead deploy ${D}${PTEST_PATH}/libnettle.so to
> fix the dlopen-test failure.
>
> Update the initialization for the salt to fix
> below Segmentation fault and also nettle-pbkdf2-test
> failure.
> # echo -n passwd| nettle-pbkdf2 -i 1 -l 16 salt
> [65534.886509] nettle-pbkdf2[708]: segfault at 1f594260 ip
> 00007f3332256998 sp 00007fff60d44410 error 4 in
> libnettle.so.6.5[7f3332244000+1d00]
> [65534.887525] Code: e8 6d db fe ff 44 01 6d 68 48 83 c4 08 5b 5d 41
> 5c 41 5d 41 5e 41 5f c3 66 2e 0f 1f 84 00 00 00 00 00 49 89 dc e9 68
> ff f
> Segmentation fault
>
> Signed-off-by: Mingli Yu <Mingli.Yu at windriver.com>
> ---
> ...kdf2.c-change-the-initialization-for-salt.patch | 39
> ++++++++++++++++++++++
> .../nettle/nettle-3.4.1/dlopen-test.patch | 20 -----------
> meta/recipes-support/nettle/nettle_3.4.1.bb | 9 ++---
> 3 files changed, 44 insertions(+), 24 deletions(-)
> create mode 100644 meta/recipes-support/nettle/nettle-3.4.1/0001-
> nettle-pbkdf2.c-change-the-initialization-for-salt.patch
> delete mode 100644 meta/recipes-support/nettle/nettle-3.4.1/dlopen-
> test.patch
>
> diff --git a/meta/recipes-support/nettle/nettle-3.4.1/0001-nettle-
> pbkdf2.c-change-the-initialization-for-salt.patch b/meta/recipes-
> support/nettle/nettle-3.4.1/0001-nettle-pbkdf2.c-change-the-
> initialization-for-salt.patch
> new file mode 100644
> index 0000000..713823e
> --- /dev/null
> +++ b/meta/recipes-support/nettle/nettle-3.4.1/0001-nettle-pbkdf2.c-
> change-the-initialization-for-salt.patch
> @@ -0,0 +1,39 @@
> +From 7510ee2877368464ecce7de515ce056e08c75245 Mon Sep 17 00:00:00
> 2001
> +From: Mingli Yu <Mingli.Yu at windriver.com>
> +Date: Fri, 12 Apr 2019 10:30:14 +0800
> +Subject: [PATCH] nettle-pbkdf2.c: change the initialization for salt
> +
> +use malloc and strncpy altogether to replace
> +strdup for salt initialization to fix below
> +Segmentation fault:
> + # echo -n passwd| nettle-pbkdf2 -i 1 -l 16 salt
> + [65534.886509] nettle-pbkdf2[708]: segfault at 1f594260 ip
> 00007f3332256998 sp 00007fff60d44410 error 4 in
> libnettle.so.6.5[7f3332244000+1d00]
> + [65534.887525] Code: e8 6d db fe ff 44 01 6d 68 48 83 c4 08 5b 5d
> 41 5c 41 5d 41 5e 41 5f c3 66 2e 0f 1f 84 00 00 00 00 00 49 89 dc e9
> 68 ff f
> + Segmentation fault
> +
> +Upstream-Status: Submitted[
> http://lists.lysator.liu.se/pipermail/nettle-bugs/2019/007467.html]
> +
> +Signed-off-by: Mingli Yu <Mingli.Yu at windriver.com>
> +---
> + tools/nettle-pbkdf2.c | 5 ++++-
> + 1 file changed, 4 insertions(+), 1 deletion(-)
> +
> +diff --git a/tools/nettle-pbkdf2.c b/tools/nettle-pbkdf2.c
> +index 1f0a301..000acd3 100644
> +--- a/tools/nettle-pbkdf2.c
> ++++ b/tools/nettle-pbkdf2.c
> +@@ -141,7 +141,10 @@ main (int argc, char **argv)
> + return EXIT_FAILURE;
> + }
> +
> +- salt = strdup (argv[0]);
> ++ salt = malloc (strlen(argv[0]) + 1);
> ++ if (! salt)
> ++ die ("Failed to allocate memory for salt\n");
> ++ strncpy(salt, argv[0], sizeof(salt) - 1);
> + salt_length = strlen(argv[0]);
> +
> + if (hex_salt)
> +--
> +2.7.4
> +
> diff --git a/meta/recipes-support/nettle/nettle-3.4.1/dlopen-
> test.patch b/meta/recipes-support/nettle/nettle-3.4.1/dlopen-
> test.patch
> deleted file mode 100644
> index c4f0b7e..0000000
> --- a/meta/recipes-support/nettle/nettle-3.4.1/dlopen-test.patch
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -Replace relative path of libnettle.so with absolute path so the test
> -program can find it.
> -Relative paths are not suitable, as the folder strucure for ptest
> -is different from the one expected by the nettle testsuite.
> -
> -Upstream-Status: Inappropriate [embedded specific]
> -
> -Signed-off-by: Juro Bystricky <juro.bystricky at intel.com>
> -
> ---- a/testsuite/dlopen-test.c 2016-10-01 00:28:38.000000000
> -0700
> -+++ b/testsuite/dlopen-test.c 2017-10-13 11:08:57.227572860
> -0700
> -@@ -9,7 +9,7 @@
> - main (int argc UNUSED, char **argv UNUSED)
> - {
> - #if HAVE_LIBDL
> -- void *handle = dlopen ("../libnettle.so", RTLD_NOW);
> -+ void *handle = dlopen ("/usr/lib/libnettle.so", RTLD_NOW);
> - int (*get_version)(void);
> - if (!handle)
> - {
> diff --git a/meta/recipes-support/nettle/nettle_3.4.1.bb
> b/meta/recipes-support/nettle/nettle_3.4.1.bb
> index dd49c30..612e058 100644
> --- a/meta/recipes-support/nettle/nettle_3.4.1.bb
> +++ b/meta/recipes-support/nettle/nettle_3.4.1.bb
> @@ -14,12 +14,9 @@ SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \
> file://Add-target-to-only-build-tests-not-run-them.patch
> \
> file://run-ptest \
> file://check-header-files-of-openssl-only-if-
> enable_.patch \
> + file://0001-nettle-pbkdf2.c-change-the-initialization-
> for-salt.patch \
> "
>
> -SRC_URI_append_class-target = "\
> - file://dlopen-test.patch \
> - "
> -
> SRC_URI[md5sum] = "9bdebb0e2f638d3b9d91f7fc264b70c1"
> SRC_URI[sha256sum] =
> "f941cf1535cd5d1819be5ccae5babef01f6db611f9b5a777bae9c7604b8a92ad"
>
> @@ -47,6 +44,10 @@ do_install_ptest() {
> # tools can be found in PATH, not in ../tools/
> sed -i -e 's|../tools/||' ${D}${PTEST_PATH}/testsuite/*-test
> install ${B}/testsuite/*-test ${D}${PTEST_PATH}/testsuite/
> + # libnettle.so is needed for dlopen-test
> + if [ -f ${D}${libdir}/libnettle.so.6.* ]; then
> + cp ${D}${libdir}/libnettle.so.6.*
> ${D}${PTEST_PATH}/libnettle.so
> + fi
> }
>
> BBCLASSEXTEND = "native nativesdk"
This commit has multiple issues. Firstly upstream rejected the patch.
Secondly adding in this library like this has caused nettle-ptest to
provide the SONAME which then led to nettle-ptest being included in
various images, e.g.:
http://git.yoctoproject.org/cgit.cgi/poky-buildhistory/tree/images/qemux86/glibc/core-image-sato/installed-package-names.txt?h=poky/warrior/qemux86#n604
which then led to nettle being spread all over the 2.7 rc1 QA report:
https://autobuilder.yocto.io/pub/releases/yocto-2.7.rc1/testresults/testresult-report.txt
I'm going to revert this.
Cheers,
Richard
More information about the Openembedded-core
mailing list