Hello community, here is the log from the commit of package kmod for openSUSE:Factory checked in at 2018-03-12 12:02:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kmod (Old) and /work/SRC/openSUSE:Factory/.kmod.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kmod" Mon Mar 12 12:02:00 2018 rev:47 rq:584632 version:25 Changes: -------- --- /work/SRC/openSUSE:Factory/kmod/kmod-testsuite.changes 2018-02-06 16:41:38.101179281 +0100 +++ /work/SRC/openSUSE:Factory/.kmod.new/kmod-testsuite.changes 2018-03-12 12:02:34.603119863 +0100 @@ -1,0 +2,8 @@ +Thu Mar 8 16:34:16 UTC 2018 - msucha...@suse.com + +- Fix PKCS#7 signature display in modinfo (bsc#1077693). + * Add libkmod-signature-implement-pkcs7-parsing-with-asn1c.patch + * Add libkmod-signature-Fix-crash-when-module-signature-is.patch + * Refresh 0010-modprobe-Implement-allow-unsupported-modules.patch + +------------------------------------------------------------------- kmod.changes: same change New: ---- libkmod-signature-Fix-crash-when-module-signature-is.patch libkmod-signature-implement-pkcs7-parsing-with-asn1c.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kmod-testsuite.spec ++++++ --- /var/tmp/diff_new_pack.lS7LGX/_old 2018-03-12 12:02:35.599084171 +0100 +++ /var/tmp/diff_new_pack.lS7LGX/_new 2018-03-12 12:02:35.603084028 +0100 @@ -21,7 +21,7 @@ Version: 25 Release: 0 Summary: Testsuite of the kmod package -License: LGPL-2.1+ and GPL-2.0+ +License: LGPL-2.1-or-later AND GPL-2.0-or-later Group: System/Kernel Url: http://www.jonmasters.org/blog/2011/12/20/libkmod-replaces-module-init-tools/ #Announce: https://lwn.net/Articles/664801/ @@ -30,12 +30,15 @@ #Git-Clone: git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod Source: https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-%version.tar.xz Source2: https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-%version.tar.sign +Patch0: libkmod-signature-implement-pkcs7-parsing-with-asn1c.patch Patch1: 0002-modprobe-Recognize-allow-unsupported-modules-on-comm.patch Patch2: 0003-libkmod-config-Recognize-allow_unsupported_modules-i.patch Patch3: 0009-libkmod-Implement-filtering-of-unsupported-modules-o.patch Patch4: 0010-modprobe-Implement-allow-unsupported-modules.patch Patch5: 0011-Do-not-filter-unsupported-modules-when-running-a-van.patch +Patch6: libkmod-signature-Fix-crash-when-module-signature-is.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildRequires: asn1c BuildRequires: autoconf BuildRequires: automake BuildRequires: git-core @@ -55,7 +58,7 @@ %prep %setup -q -n kmod-%version -%patch -P 1 -P 2 -P 3 -P 4 -P 5 -p1 +%patch -P 0 -P 1 -P 2 -P 3 -P 4 -P 5 -P 6 -p1 %build autoreconf -fi @@ -68,6 +71,7 @@ --includedir="%_includedir/kmod" \ --with-rootlibdir="%_libdir" \ --bindir="%_bindir" +make -C libkmod/pkcs7/asn1c-gen regen make %{?_smp_mflags} V=1 KDIR="%kdir" %install ++++++ kmod.spec ++++++ --- /var/tmp/diff_new_pack.lS7LGX/_old 2018-03-12 12:02:35.631083025 +0100 +++ /var/tmp/diff_new_pack.lS7LGX/_new 2018-03-12 12:02:35.643082595 +0100 @@ -21,7 +21,7 @@ Version: 25 Release: 0 Summary: Utilities to load modules into the kernel -License: LGPL-2.1+ and GPL-2.0+ +License: LGPL-2.1-or-later AND GPL-2.0-or-later Group: System/Kernel Url: https://www.kernel.org/pub/linux/utils/kernel/kmod/ @@ -29,12 +29,15 @@ #Git-Clone: git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod Source: https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-%version.tar.xz Source2: https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-%version.tar.sign +Patch0: libkmod-signature-implement-pkcs7-parsing-with-asn1c.patch Patch1: 0002-modprobe-Recognize-allow-unsupported-modules-on-comm.patch Patch2: 0003-libkmod-config-Recognize-allow_unsupported_modules-i.patch Patch3: 0009-libkmod-Implement-filtering-of-unsupported-modules-o.patch Patch4: 0010-modprobe-Implement-allow-unsupported-modules.patch Patch5: 0011-Do-not-filter-unsupported-modules-when-running-a-van.patch +Patch6: libkmod-signature-Fix-crash-when-module-signature-is.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildRequires: asn1c BuildRequires: autoconf BuildRequires: automake BuildRequires: libtool @@ -57,7 +60,7 @@ %package bash-completion Summary: Bash completion routines for the kmod utilities -License: LGPL-2.1+ and GPL-2.0+ +License: LGPL-2.1-or-later AND GPL-2.0-or-later Group: System/Shells BuildArch: noarch @@ -66,7 +69,7 @@ %package compat Summary: Compat symlinks for kernel module utilities -License: GPL-2.0+ +License: GPL-2.0-or-later Group: System/Kernel Requires: kmod = %version-%release Requires: suse-module-tools @@ -83,7 +86,7 @@ %package -n %lname Summary: Library to interact with Linux kernel modules -License: LGPL-2.1+ +License: LGPL-2.1-or-later Group: System/Libraries %description -n %lname @@ -92,7 +95,7 @@ %package -n libkmod-devel Summary: Development files for libkmod -License: LGPL-2.1+ +License: LGPL-2.1-or-later Group: Development/Libraries/C and C++ Requires: %lname = %version @@ -105,7 +108,7 @@ %prep %setup -q -n kmod-%version -%patch -P 1 -P 2 -P 3 -P 4 -P 5 -p1 +%patch -P 0 -P 1 -P 2 -P 3 -P 4 -P 5 -P 6 -p1 %build autoreconf -fi @@ -118,6 +121,7 @@ --includedir="%_includedir/kmod" \ --with-rootlibdir="%_libdir" \ --bindir="%_bindir" +make -C libkmod/pkcs7/asn1c-gen regen make %{?_smp_mflags} V=1 %install ++++++ 0010-modprobe-Implement-allow-unsupported-modules.patch ++++++ --- /var/tmp/diff_new_pack.lS7LGX/_old 2018-03-12 12:02:35.687081018 +0100 +++ /var/tmp/diff_new_pack.lS7LGX/_new 2018-03-12 12:02:35.707080301 +0100 @@ -1,23 +1,25 @@ -From ea7f79db6890b99558adc9badd543e8ab59bc756 Mon Sep 17 00:00:00 2001 +From 5ed5ab09ff7d4fb581aec3a35f2eff24eaa838f9 Mon Sep 17 00:00:00 2001 From: Michal Marek <mma...@suse.cz> Date: Wed, 5 Mar 2014 15:02:44 +0100 -Subject: [PATCH 4/5] modprobe: Implement --allow-unsupported-modules +Subject: [PATCH] modprobe: Implement --allow-unsupported-modules References: fate#316971 Patch-mainline: never --- - Makefile.am | 4 +++- - libkmod/libkmod-unsupported.c | 9 +++++++++ - libkmod/libkmod-unsupported.h | 8 ++++++++ - tools/modprobe.c | 8 +++++++- + Makefile.am | 4 +++- + libkmod/libkmod-unsupported.c | 9 +++++++++ + libkmod/libkmod-unsupported.h | 8 ++++++++ + tools/modprobe.c | 8 +++++++- 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 libkmod/libkmod-unsupported.c create mode 100644 libkmod/libkmod-unsupported.h ---- kmod-20.orig/Makefile.am -+++ kmod-20/Makefile.am -@@ -87,7 +87,9 @@ libkmod_libkmod_la_LIBADD = \ - ${liblzma_LIBS} ${zlib_LIBS} +diff --git a/Makefile.am b/Makefile.am +index 26384ccd6de1..d9856f77f8f6 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -106,7 +106,9 @@ libkmod_libkmod_la_LIBADD = \ + ${libpkcs7asn1c_LIBS} noinst_LTLIBRARIES += libkmod/libkmod-internal.la -libkmod_libkmod_internal_la_SOURCES = $(libkmod_libkmod_la_SOURCES) @@ -27,8 +29,11 @@ libkmod_libkmod_internal_la_LDFLAGS = $(AM_LDFLAGS) \ -Wl,--version-script=$(top_srcdir)/libkmod/libkmod.sym libkmod_libkmod_internal_la_DEPENDENCIES = $(libkmod_libkmod_la_DEPENDENCIES) +diff --git a/libkmod/libkmod-unsupported.c b/libkmod/libkmod-unsupported.c +new file mode 100644 +index 000000000000..7ef9fc875b46 --- /dev/null -+++ kmod-20/libkmod/libkmod-unsupported.c ++++ b/libkmod/libkmod-unsupported.c @@ -0,0 +1,9 @@ +#include "libkmod-internal.h" +#include "libkmod-unsupported.h" @@ -39,8 +44,11 @@ + + config->block_unsupported = 0; +} +diff --git a/libkmod/libkmod-unsupported.h b/libkmod/libkmod-unsupported.h +new file mode 100644 +index 000000000000..a95b4a22fd14 --- /dev/null -+++ kmod-20/libkmod/libkmod-unsupported.h ++++ b/libkmod/libkmod-unsupported.h @@ -0,0 +1,8 @@ +#pragma once + @@ -50,8 +58,10 @@ + * library + */ +void kmod_internal_allow_unsupported(struct kmod_ctx *ctx); ---- kmod-20.orig/tools/modprobe.c -+++ kmod-20/tools/modprobe.c +diff --git a/tools/modprobe.c b/tools/modprobe.c +index c0b7c6854375..1f6f28666183 100644 +--- a/tools/modprobe.c ++++ b/tools/modprobe.c @@ -38,6 +38,8 @@ #include "kmod.h" @@ -61,7 +71,7 @@ static int log_priority = LOG_CRIT; static int use_syslog = 0; #define LOG(...) log_printf(log_priority, __VA_ARGS__) -@@ -730,6 +732,7 @@ static int do_modprobe(int argc, char ** +@@ -729,6 +731,7 @@ static int do_modprobe(int argc, char **orig_argv) int do_remove = 0; int do_show_config = 0; int do_show_modversions = 0; @@ -69,7 +79,7 @@ int err; argv = prepend_options_from_env(&argc, orig_argv); -@@ -813,7 +816,7 @@ static int do_modprobe(int argc, char ** +@@ -812,7 +815,7 @@ static int do_modprobe(int argc, char **orig_argv) kversion = optarg; break; case 128: @@ -78,7 +88,7 @@ break; case 's': env_modprobe_options_append("-s"); -@@ -885,6 +888,9 @@ static int do_modprobe(int argc, char ** +@@ -885,6 +888,9 @@ static int do_modprobe(int argc, char **orig_argv) log_setup_kmod_log(ctx, verbose); @@ -88,3 +98,6 @@ kmod_load_resources(ctx); if (do_show_config) +-- +2.13.6 + ++++++ libkmod-signature-Fix-crash-when-module-signature-is.patch ++++++ >From 5336a1d1c0815da3e3b9e57f2ca9d04de3bc65dc Mon Sep 17 00:00:00 2001 From: Michal Suchanek <msucha...@suse.de> Date: Thu, 8 Mar 2018 18:30:46 +0100 Subject: [PATCH] libkmod-signature: Fix crash when module signature is not present. Signed-off-by: Michal Suchanek <msucha...@suse.de> --- libkmod/libkmod-internal.h | 2 +- libkmod/libkmod-module.c | 21 +++++++++--------- libkmod/libkmod-signature.c | 53 +++++++++++++++++++++++++-------------------- 3 files changed, 42 insertions(+), 34 deletions(-) diff --git a/libkmod/libkmod-internal.h b/libkmod/libkmod-internal.h index 2ad74c7a33a5..8bc9ecfb906e 100644 --- a/libkmod/libkmod-internal.h +++ b/libkmod/libkmod-internal.h @@ -192,5 +192,5 @@ struct kmod_signature_info { void (*free)(void *); void *private; }; -bool kmod_module_signature_info(const struct kmod_file *file, struct kmod_signature_info *sig_info) _must_check_ __attribute__((nonnull(1, 2))); +struct kmod_signature_info *kmod_module_signature_info(const struct kmod_file *file) _must_check_ __attribute__((nonnull(1))); void kmod_module_signature_info_free(struct kmod_signature_info *sig_info) __attribute__((nonnull)); diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c index 7b00d526edec..cbe35819932e 100644 --- a/libkmod/libkmod-module.c +++ b/libkmod/libkmod-module.c @@ -2304,7 +2304,7 @@ KMOD_EXPORT int kmod_module_get_info(const struct kmod_module *mod, struct kmod_ struct kmod_elf *elf; char **strings; int i, count, ret = -ENOMEM; - struct kmod_signature_info sig_info; + struct kmod_signature_info *sig_info = NULL; if (mod == NULL || list == NULL) return -ENOENT; @@ -2341,32 +2341,32 @@ KMOD_EXPORT int kmod_module_get_info(const struct kmod_module *mod, struct kmod_ goto list_error; } - if (kmod_module_signature_info(mod->file, &sig_info)) { + if (sig_info = kmod_module_signature_info(mod->file)) { struct kmod_list *n; n = kmod_module_info_append(list, "sig_id", strlen("sig_id"), - sig_info.id_type, strlen(sig_info.id_type)); + sig_info->id_type, strlen(sig_info->id_type)); if (n == NULL) goto list_error; count++; n = kmod_module_info_append(list, "signer", strlen("signer"), - sig_info.signer, sig_info.signer_len); + sig_info->signer, sig_info->signer_len); if (n == NULL) goto list_error; count++; n = kmod_module_info_append_hex(list, "sig_key", strlen("sig_key"), - sig_info.key_id, - sig_info.key_id_len); + sig_info->key_id, + sig_info->key_id_len); if (n == NULL) goto list_error; count++; n = kmod_module_info_append(list, "sig_hashalgo", strlen("sig_hashalgo"), - sig_info.hash_algo, strlen(sig_info.hash_algo)); + sig_info->hash_algo, strlen(sig_info->hash_algo)); if (n == NULL) goto list_error; count++; @@ -2377,8 +2377,8 @@ KMOD_EXPORT int kmod_module_get_info(const struct kmod_module *mod, struct kmod_ */ n = kmod_module_info_append_hex(list, "signature", strlen("signature"), - sig_info.sig, - sig_info.sig_len); + sig_info->sig, + sig_info->sig_len); if (n == NULL) goto list_error; @@ -2389,7 +2389,8 @@ KMOD_EXPORT int kmod_module_get_info(const struct kmod_module *mod, struct kmod_ list_error: /* aux structures freed in normal case also */ - kmod_module_signature_info_free(&sig_info); + if (sig_info) + kmod_module_signature_info_free(sig_info); if (ret < 0) { kmod_module_info_free_list(*list); diff --git a/libkmod/libkmod-signature.c b/libkmod/libkmod-signature.c index bdf84cb14718..fae074e6dd1d 100644 --- a/libkmod/libkmod-signature.c +++ b/libkmod/libkmod-signature.c @@ -93,13 +93,17 @@ struct module_signature { uint32_t sig_len; /* Length of signature data (big endian) */ }; -static bool +static struct kmod_signature_info * kmod_module_signature_info_default(const char *mem, off_t size, const struct module_signature *modsig, - size_t sig_len, - struct kmod_signature_info *sig_info) + size_t sig_len) { + struct kmod_signature_info *sig_info = malloc(sizeof *sig_info); + + if (!sig_info) + return NULL; + size -= sig_len; sig_info->sig = mem + size; sig_info->sig_len = sig_len; @@ -119,7 +123,7 @@ kmod_module_signature_info_default(const char *mem, sig_info->free = NULL; sig_info->private = NULL; - return true; + return sig_info; } static void kmod_module_signature_info_pkcs7_free(void *s) @@ -129,13 +133,13 @@ static void kmod_module_signature_info_pkcs7_free(void *s) pkcs7_free_cert(si->private); } -static bool +static struct kmod_signature_info * kmod_module_signature_info_pkcs7(const char *mem, off_t size, const struct module_signature *modsig, - size_t sig_len, - struct kmod_signature_info *sig_info) + size_t sig_len) { + struct kmod_signature_info *sig_info = NULL; const char *pkcs7_raw; struct pkcs7_cert *cert; @@ -144,7 +148,13 @@ kmod_module_signature_info_pkcs7(const char *mem, cert = pkcs7_parse_cert(pkcs7_raw, sig_len); if (cert == NULL) - return false; + return NULL; + + sig_info = malloc(sizeof *sig_info); + if (!sig_info) { + free(cert); + return NULL; + } sig_info->private = cert; sig_info->free = kmod_module_signature_info_pkcs7_free; @@ -162,7 +172,7 @@ kmod_module_signature_info_pkcs7(const char *mem, sig_info->hash_algo = cert->hash_algo; sig_info->id_type = pkey_id_type[modsig->id_type]; - return true; + return sig_info; } #define SIG_MAGIC "~Module signature appended~\n" @@ -178,48 +188,45 @@ kmod_module_signature_info_pkcs7(const char *mem, * [ SIG_MAGIC ] */ -bool kmod_module_signature_info(const struct kmod_file *file, struct kmod_signature_info *sig_info) +struct kmod_signature_info *kmod_module_signature_info(const struct kmod_file *file) { const char *mem; off_t size; const struct module_signature *modsig; size_t sig_len; - bool ret; size = kmod_file_get_size(file); mem = kmod_file_get_contents(file); if (size < (off_t)strlen(SIG_MAGIC)) - return false; + return NULL; size -= strlen(SIG_MAGIC); if (memcmp(SIG_MAGIC, mem + size, strlen(SIG_MAGIC)) != 0) - return false; + return NULL; if (size < (off_t)sizeof(struct module_signature)) - return false; + return NULL; size -= sizeof(struct module_signature); modsig = (struct module_signature *)(mem + size); if (modsig->algo >= PKEY_ALGO__LAST || modsig->hash >= PKEY_HASH__LAST || modsig->id_type >= PKEY_ID_TYPE__LAST) - return false; + return NULL; sig_len = be32toh(get_unaligned(&modsig->sig_len)); if (sig_len == 0 || size < (int64_t)(modsig->signer_len + modsig->key_id_len + sig_len)) - return false; + return NULL; if (modsig->id_type == PKEY_ID_PKCS7) - ret = kmod_module_signature_info_pkcs7(mem, size, - modsig, sig_len, - sig_info); + return kmod_module_signature_info_pkcs7(mem, size, + modsig, sig_len); else - ret = kmod_module_signature_info_default(mem, size, - modsig, sig_len, - sig_info); - return ret; + return kmod_module_signature_info_default(mem, size, + modsig, sig_len); } void kmod_module_signature_info_free(struct kmod_signature_info *sig_info) { if (sig_info->free) sig_info->free(sig_info); + free(sig_info); } -- 2.13.6 ++++++ libkmod-signature-implement-pkcs7-parsing-with-asn1c.patch ++++++ ++++ 896 lines (skipped)