[packages/rpm] - adapt rpm.org fixes for CVE-2013-6435 and CVE-2014-8118

baggins baggins at pld-linux.org
Sun Jan 25 22:02:18 CET 2015


commit 8dc5e0233ad0d5d82c143354cf67365c79f27525
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Sun Jan 25 22:01:45 2015 +0100

    - adapt rpm.org fixes for CVE-2013-6435 and CVE-2014-8118

 rpm-CVE-2013-6435.patch | 72 +++++++++++++++++++++++++++++++++++++++++++++++++
 rpm-CVE-2014-8118.patch | 11 ++++++++
 rpm.spec                |  4 +++
 3 files changed, 87 insertions(+)
---
diff --git a/rpm.spec b/rpm.spec
index 0f292e1..7863ff8 100644
--- a/rpm.spec
+++ b/rpm.spec
@@ -171,6 +171,8 @@ Patch81:	%{name}-perl-magic.patch
 Patch82:	%{name}-5.4.15-use-DSA-sig.patch
 Patch83:	%{name}-ignore-missing-macro-files.patch
 Patch84:	x32.patch
+Patch85:	rpm-CVE-2013-6435.patch
+Patch86:	rpm-CVE-2014-8118.patch
 
 # Patches imported from Mandriva
 
@@ -948,6 +950,8 @@ cd -
 %patch81 -p0
 %patch82 -p1
 %patch84 -p1
+%patch85 -p1
+%patch86 -p1
 
 %patch1000 -p1
 %patch1001 -p1
diff --git a/rpm-CVE-2013-6435.patch b/rpm-CVE-2013-6435.patch
new file mode 100644
index 0000000..d96fd44
--- /dev/null
+++ b/rpm-CVE-2013-6435.patch
@@ -0,0 +1,72 @@
+--- rpm-5.4.15/rpmio/iosm.c~	2014-06-11 19:58:04.000000000 +0200
++++ rpm-5.4.15/rpmio/iosm.c	2015-01-25 21:53:27.659197235 +0100
+@@ -2627,7 +2627,7 @@
+ 	iosm->rfd = NULL;
+ 	break;
+     case IOSM_WOPEN:
+-	iosm->wfd = Fopen(iosm->path, "w.fdio");
++	iosm->wfd = Fopen(iosm->path, "wU.fdio");
+ 	if (iosm->wfd == NULL || Ferror(iosm->wfd)) {
+ 	    if (iosm->wfd != NULL)	(void) iosmNext(iosm, IOSM_WCLOSE);
+ 	    iosm->wfd = NULL;
+--- rpm-5.4.15/rpmio/rpmio.c~	2014-08-05 00:47:16.000000000 +0200
++++ rpm-5.4.15/rpmio/rpmio.c	2015-01-25 21:50:59.409202466 +0100
+@@ -2638,16 +2638,20 @@
+  * - bzopen:	'q' sets verbosity to 0
+  * - bzopen:	'v' does verbosity++ (up to 4)
+  * - HACK:	'.' terminates, rest is type of I/O
++ * -            'U' sets *mode to zero (no permissions) instead of 0666
+  */
+ static inline void cvtfmode (const char *m,
+ 				/*@out@*/ char *stdio, size_t nstdio,
+ 				/*@out@*/ char *other, size_t nother,
+-				/*@out@*/ const char **end, /*@out@*/ int * f)
++				/*@out@*/ const char **end, /*@out@*/ int * f, mode_t *mode)
+ 	/*@modifies *stdio, *other, *end, *f @*/
+ {
+     int flags = 0;
+     char c;
+ 
++    if (mode)
++	*mode = 0666;
++
+     switch (*m) {
+     case 'a':
+ 	flags |= O_WRONLY | O_CREAT | O_APPEND;
+@@ -2661,6 +2665,9 @@
+ 	flags |= O_RDONLY;
+ 	if (--nstdio > 0) *stdio++ = *m;
+ 	break;
++    case 'U':
++	if (mode) *mode = 0;
++	break;
+     default:
+ 	*stdio = '\0';
+ 	return;
+@@ -2729,7 +2736,7 @@
+     if (fmode == NULL)
+ 	return NULL;
+ 
+-    cvtfmode(fmode, stdio, sizeof(stdio), other, sizeof(other), &end, NULL);
++    cvtfmode(fmode, stdio, sizeof(stdio), other, sizeof(other), &end, NULL, NULL);
+     if (stdio[0] == '\0')
+ 	return NULL;
+     zstdio[0] = '\0';
+@@ -2835,7 +2842,7 @@
+     const char * fmode = NULL;
+     char stdio[20], other[20];
+     const char *end = NULL;
+-    mode_t perms = 0666;
++    mode_t perms;
+     int flags = 0;
+     FD_t fd = NULL;
+ 
+@@ -2849,7 +2856,7 @@
+ fprintf(stderr, "==> Fopen(%s, %s)\n", path, fmode);
+ 
+     stdio[0] = '\0';
+-    cvtfmode(fmode, stdio, sizeof(stdio), other, sizeof(other), &end, &flags);
++    cvtfmode(fmode, stdio, sizeof(stdio), other, sizeof(other), &end, &flags, &perms);
+     if (stdio[0] == '\0')
+ 	goto exit;
+ 
diff --git a/rpm-CVE-2014-8118.patch b/rpm-CVE-2014-8118.patch
new file mode 100644
index 0000000..dfd27f4
--- /dev/null
+++ b/rpm-CVE-2014-8118.patch
@@ -0,0 +1,11 @@
+--- rpm-5.4.15/rpmio/cpio.c.orig	2012-04-16 05:21:22.000000000 +0200
++++ rpm-5.4.15/rpmio/cpio.c	2015-01-25 15:50:23.017311712 +0100
+@@ -136,7 +136,7 @@
+     /*@=shiftimplementation@*/
+ 
+     GET_NUM_FIELD(hdr->namesize, nb);
+-    if (nb >= iosm->wrsize)
++    if (nb <= 0 || nb >= iosm->wrsize)
+ 	return IOSMERR_BAD_HEADER;
+ 
+     /* Read file name. */
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/rpm.git/commitdiff/8dc5e0233ad0d5d82c143354cf67365c79f27525



More information about the pld-cvs-commit mailing list