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)


Reply via email to