[Glibc-bsd-commits] r3166 - in trunk/kfreebsd-8/debian: . patches

Aurelien Jarno aurel32 at alioth.debian.org
Tue Aug 17 18:44:15 UTC 2010


Author: aurel32
Date: 2010-08-17 18:44:15 +0000 (Tue, 17 Aug 2010)
New Revision: 3166

Added:
   trunk/kfreebsd-8/debian/patches/000_coda.diff
Modified:
   trunk/kfreebsd-8/debian/changelog
   trunk/kfreebsd-8/debian/patches/series
Log:
  * Fix Coda filesystem kernel memory disclosure (CVE-2010-3014).



Modified: trunk/kfreebsd-8/debian/changelog
===================================================================
--- trunk/kfreebsd-8/debian/changelog	2010-08-17 18:02:52 UTC (rev 3165)
+++ trunk/kfreebsd-8/debian/changelog	2010-08-17 18:44:15 UTC (rev 3166)
@@ -1,9 +1,10 @@
-kfreebsd-8 (8.1-5) UNRELEASED; urgency=low
+kfreebsd-8 (8.1-5) UNRELEASED; urgency=medium
 
   * Correctly update a root filesystem to read/write when the mount 
     options are passed as flags instead of iovec, like in busybox.
+  * Fix Coda filesystem kernel memory disclosure (CVE-2010-3014).
 
- -- Aurelien Jarno <aurel32 at debian.org>  Tue, 17 Aug 2010 19:00:29 +0200
+ -- Aurelien Jarno <aurel32 at debian.org>  Tue, 17 Aug 2010 20:41:40 +0200
 
 kfreebsd-8 (8.1-4) unstable; urgency=low
 

Added: trunk/kfreebsd-8/debian/patches/000_coda.diff
===================================================================
--- trunk/kfreebsd-8/debian/patches/000_coda.diff	                        (rev 0)
+++ trunk/kfreebsd-8/debian/patches/000_coda.diff	2010-08-17 18:44:15 UTC (rev 3166)
@@ -0,0 +1,50 @@
+--- a/sys/fs/coda/coda.h
++++ b/sys/fs/coda/coda.h
+@@ -41,7 +41,9 @@
+ #ifndef _CODA_HEADER_
+ #define _CODA_HEADER_
+ 
++#ifdef _KERNEL
+ #include "opt_coda.h"	/* for CODA_COMPAT_5 option */
++#endif
+ 
+ /* Avoid CODA_COMPAT_5 redefinition in coda5 module */
+ #if defined (CODA5_MODULE) && !defined(CODA_COMPAT_5)
+@@ -782,8 +784,8 @@
+ #define PIOCPARM_MASK 0x0000ffff
+ struct ViceIoctl {
+         caddr_t in, out;        /* Data to be transferred in, or out */
+-        short in_size;          /* Size of input buffer <= 2K */
+-        short out_size;         /* Maximum size of output buffer, <= 2K */
++        unsigned short in_size;	/* Size of input buffer <= 8K */
++        unsigned short out_size; /* Maximum size of output buffer, <= 8K */
+ };
+ 
+ #if defined(__CYGWIN32__) || defined(DJGPP)
+--- a/sys/fs/coda/coda_venus.c
++++ b/sys/fs/coda/coda_venus.c
+@@ -274,6 +274,12 @@
+ 	tmp = ((com >> 16) & IOCPARM_MASK) - sizeof (char *) - sizeof (int);
+ 	inp->cmd |= (tmp & IOCPARM_MASK) << 16;
+ 
++	if (iap->vi.in_size > VC_MAXMSGSIZE ||
++	    iap->vi.out_size > VC_MAXMSGSIZE) {
++		CODA_FREE(inp, coda_ioctl_size);
++		return (EINVAL);
++	}
++
+ 	inp->rwflag = flag;
+ 	inp->len = iap->vi.in_size;
+ 	inp->data = (char *)(sizeof (struct coda_ioctl_in));
+--- a/sys/fs/coda/coda_vnops.c
++++ b/sys/fs/coda/coda_vnops.c
+@@ -471,7 +471,8 @@
+ 		    iap->path)););
+ 		return (EINVAL);
+ 	}
+-	if (iap->vi.in_size > VC_MAXDATASIZE) {
++	if (iap->vi.in_size > VC_MAXDATASIZE ||
++	    iap->vi.out_size > VC_MAXDATASIZE) {
+ 		NDFREE(&ndp, 0);
+ 		return (EINVAL);
+ 	}

Modified: trunk/kfreebsd-8/debian/patches/series
===================================================================
--- trunk/kfreebsd-8/debian/patches/series	2010-08-17 18:02:52 UTC (rev 3165)
+++ trunk/kfreebsd-8/debian/patches/series	2010-08-17 18:44:15 UTC (rev 3166)
@@ -1,5 +1,6 @@
 000_adaptive_machine_arch.diff 
 000_ata.diff
+000_coda.diff
 000_ufs_lookup.diff  
 001_misc.diff
 003_glibc_dev_aicasm.diff




More information about the Glibc-bsd-commits mailing list