[arch-commits] Commit in kmod/trunk (3 files)

Dave Reisner dreisner at archlinux.org
Fri May 11 01:49:01 UTC 2012


    Date: Thursday, May 10, 2012 @ 21:49:01
  Author: dreisner
Revision: 158816

upgpkg: kmod 8-2

- backport upstream patches to fix crash

Added:
  kmod/trunk/0001-libkmod-file-gracefully-handle-errors-from-zlib.patch
  kmod/trunk/0002-depmod-report-failures-in-loading-symbols.patch
Modified:
  kmod/trunk/PKGBUILD

------------------------------------------------------------+
 0001-libkmod-file-gracefully-handle-errors-from-zlib.patch |   35 +++++++++++
 0002-depmod-report-failures-in-loading-symbols.patch       |   34 ++++++++++
 PKGBUILD                                                   |   18 ++++-
 3 files changed, 82 insertions(+), 5 deletions(-)

Added: 0001-libkmod-file-gracefully-handle-errors-from-zlib.patch
===================================================================
--- 0001-libkmod-file-gracefully-handle-errors-from-zlib.patch	                        (rev 0)
+++ 0001-libkmod-file-gracefully-handle-errors-from-zlib.patch	2012-05-11 01:49:01 UTC (rev 158816)
@@ -0,0 +1,35 @@
+From c7d5a60d3df735a3816bbc1ff1b416a803a4f7a6 Mon Sep 17 00:00:00 2001
+From: Dave Reisner <dreisner at archlinux.org>
+Date: Mon, 7 May 2012 19:41:41 -0400
+Subject: [PATCH 1/2] libkmod-file: gracefully handle errors from zlib
+
+zlib won't necessarily set the system errno, and this is particularly
+evident on corrupted data (which results in a double free). Use zlib's
+gzerror to detect the failure, returning a generic EINVAL when zlib
+doesn't provide us with an errno.
+---
+ libkmod/libkmod-file.c |    8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/libkmod/libkmod-file.c b/libkmod/libkmod-file.c
+index 46ad8d9..8beb7e3 100644
+--- a/libkmod/libkmod-file.c
++++ b/libkmod/libkmod-file.c
+@@ -199,7 +199,13 @@ static int load_zlib(struct kmod_file *file)
+ 		if (r == 0)
+ 			break;
+ 		else if (r < 0) {
+-			err = -errno;
++			int gzerr;
++			const char *gz_errmsg = gzerror(file->gzf, &gzerr);
++
++			ERR(file->ctx, "gzip: %s\n", gz_errmsg);
++
++			/* gzip might not set errno here */
++			err = gzerr == Z_ERRNO ? -errno : -EINVAL;
+ 			goto error;
+ 		}
+ 		did += r;
+-- 
+1.7.10.1
+

Added: 0002-depmod-report-failures-in-loading-symbols.patch
===================================================================
--- 0002-depmod-report-failures-in-loading-symbols.patch	                        (rev 0)
+++ 0002-depmod-report-failures-in-loading-symbols.patch	2012-05-11 01:49:01 UTC (rev 158816)
@@ -0,0 +1,34 @@
+From 819f79a24d58e3c8429f1631df2f8f85a2f95d4a Mon Sep 17 00:00:00 2001
+From: Dave Reisner <dreisner at archlinux.org>
+Date: Mon, 7 May 2012 19:41:42 -0400
+Subject: [PATCH 2/2] depmod: report failures in loading symbols
+
+Previously, depmod would relegate failures of kmod_module_get_symbols()
+to debug output, assuming the "error" was simply a lack of symbols.
+Leave the ENOENT return to debug output, but report anything else as a
+real error.
+---
+ tools/kmod-depmod.c |    7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/tools/kmod-depmod.c b/tools/kmod-depmod.c
+index e89dff6..bceb407 100644
+--- a/tools/kmod-depmod.c
++++ b/tools/kmod-depmod.c
+@@ -1542,8 +1542,11 @@ static int depmod_load_symbols(struct depmod *depmod)
+ 		struct kmod_list *l, *list = NULL;
+ 		int err = kmod_module_get_symbols(mod->kmod, &list);
+ 		if (err < 0) {
+-			DBG("ignoring %s: no symbols: %s\n",
+-				mod->path, strerror(-err));
++			if (err == -ENOENT)
++				DBG("ignoring %s: no symbols\n", mod->path);
++			else
++				ERR("failed to load symbols from %s: %s\n",
++						mod->path, strerror(-err));
+ 			continue;
+ 		}
+ 		kmod_list_foreach(l, list) {
+-- 
+1.7.10.1
+

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2012-05-11 00:55:49 UTC (rev 158815)
+++ PKGBUILD	2012-05-11 01:49:01 UTC (rev 158816)
@@ -3,7 +3,7 @@
 
 pkgname=kmod
 pkgver=8
-pkgrel=1
+pkgrel=2
 pkgdesc="Linux kernel module handling"
 arch=('i686' 'x86_64')
 url='http://git.kernel.org/?p=utils/kernel/kmod/kmod.git;a=summary'
@@ -16,18 +16,26 @@
 source=("ftp://ftp.kernel.org/pub/linux/utils/kernel/$pkgname/$pkgname-$pkgver.tar.xz"
         "depmod-search.conf"
         "0001-split-usr-read-configs-from-lib-depmod.d-modprobe.d.patch"
-        "0002-config-hardcode-the-path-to-modules-to-be-lib-module.patch")
+        "0002-config-hardcode-the-path-to-modules-to-be-lib-module.patch"
+        "0001-libkmod-file-gracefully-handle-errors-from-zlib.patch"
+        "0002-depmod-report-failures-in-loading-symbols.patch")
 md5sums=('d4e3d038b5370b1e8ff237c55666aa64'
          'dd62cbf62bd8f212f51ef8c43bec9a77'
          'ba73b9e98db1abbf41274f922fcfbd55'
-         'c9af56636c5667cf4ce3a31ea56e03d9')
+         'c9af56636c5667cf4ce3a31ea56e03d9'
+         '1a877b9863b94f91c8d3aec97c021c6b'
+         '1a9f132779f90556852e70279577ed22')
 
 build() {
   cd "$pkgname-$pkgver"
 
-  patch -p1 -i ../0001-split-usr-read-configs-from-lib-depmod.d-modprobe.d.patch
-  patch -p1 -i ../0002-config-hardcode-the-path-to-modules-to-be-lib-module.patch
+  patch -Np1 <"$srcdir"/0001-split-usr-read-configs-from-lib-depmod.d-modprobe.d.patch
+  patch -Np1 <"$srcdir"/0002-config-hardcode-the-path-to-modules-to-be-lib-module.patch
 
+  # fix crash on corrupted zlib compression
+  patch -Np1 <"$srcdir"/0001-libkmod-file-gracefully-handle-errors-from-zlib.patch
+  patch -Np1 <"$srcdir"/0002-depmod-report-failures-in-loading-symbols.patch
+
   ./configure \
     --sysconfdir=/etc \
     --with-zlib \




More information about the arch-commits mailing list