[kernel] r7154 - in dists/sid/linux-2.6.16/debian: . patches

Dann Frazier dannf at costa.debian.org
Mon Aug 14 05:20:35 UTC 2006


Author: dannf
Date: Mon Aug 14 05:20:32 2006
New Revision: 7154

Added:
   dists/sid/linux-2.6.16/debian/patches/fs-ext3-bad-nfs-handle.patch
   dists/sid/linux-2.6.16/debian/patches/series/18
Modified:
   dists/sid/linux-2.6.16/debian/changelog

Log:
* fs-ext3-bad-nfs-handle.patch: avoid triggering ext3_error on bad NFS
  file handle (CVE-2006-3468)

Modified: dists/sid/linux-2.6.16/debian/changelog
==============================================================================
--- dists/sid/linux-2.6.16/debian/changelog	(original)
+++ dists/sid/linux-2.6.16/debian/changelog	Mon Aug 14 05:20:32 2006
@@ -1,9 +1,14 @@
 linux-2.6.16 (2.6.16-18) UNRELEASED; urgency=low
 
+  [ Sven Luther ]
   * [powerpc] Added console=hvsi0 too to CMDLINE to the powerpc64 flavour,
     for non-virtualized IBM power machines serial console.
 
- -- Sven Luther <luther at debian.org>  Wed,  9 Aug 2006 20:34:19 +0200
+  [ dann frazier ]
+  * fs-ext3-bad-nfs-handle.patch: avoid triggering ext3_error on bad NFS
+    file handle (CVE-2006-3468)
+
+ -- dann frazier <dannf at debian.org>  Sun, 13 Aug 2006 23:11:56 -0600
 
 linux-2.6.16 (2.6.16-17) unstable; urgency=high
 

Added: dists/sid/linux-2.6.16/debian/patches/fs-ext3-bad-nfs-handle.patch
==============================================================================
--- (empty file)
+++ dists/sid/linux-2.6.16/debian/patches/fs-ext3-bad-nfs-handle.patch	Mon Aug 14 05:20:32 2006
@@ -0,0 +1,78 @@
+diff -urN linux-2.6.16.27.orig/fs/ext3/inode.c linux-2.6.16.27/fs/ext3/inode.c
+--- linux-2.6.16.27.orig/fs/ext3/inode.c	2006-07-17 07:58:58.000000000 -0600
++++ linux-2.6.16.27/fs/ext3/inode.c	2006-08-13 22:57:14.000000000 -0600
+@@ -2259,16 +2259,15 @@
+ 	struct ext3_group_desc * gdp;
+ 
+ 
+-	if ((ino != EXT3_ROOT_INO &&
+-		ino != EXT3_JOURNAL_INO &&
+-		ino != EXT3_RESIZE_INO &&
+-		ino < EXT3_FIRST_INO(sb)) ||
+-		ino > le32_to_cpu(
+-			EXT3_SB(sb)->s_es->s_inodes_count)) {
+-		ext3_error (sb, "ext3_get_inode_block",
+-			    "bad inode number: %lu", ino);
++	if (!ext3_valid_inum(sb, ino)) {
++		/*
++		 * This error is already checked for in namei.c unless we are
++		 * looking at an NFS filehandle, in which case no error
++		 * report is needed
++		 */
+ 		return 0;
+ 	}
++
+ 	block_group = (ino - 1) / EXT3_INODES_PER_GROUP(sb);
+ 	if (block_group >= EXT3_SB(sb)->s_groups_count) {
+ 		ext3_error (sb, "ext3_get_inode_block",
+diff -urN linux-2.6.16.27.orig/fs/ext3/namei.c linux-2.6.16.27/fs/ext3/namei.c
+--- linux-2.6.16.27.orig/fs/ext3/namei.c	2006-07-17 07:58:58.000000000 -0600
++++ linux-2.6.16.27/fs/ext3/namei.c	2006-08-13 22:57:14.000000000 -0600
+@@ -1000,7 +1000,12 @@
+ 	if (bh) {
+ 		unsigned long ino = le32_to_cpu(de->inode);
+ 		brelse (bh);
+-		inode = iget(dir->i_sb, ino);
++		if (!ext3_valid_inum(dir->i_sb, ino)) {
++			ext3_error(dir->i_sb, "ext3_lookup",
++				   "bad inode number: %lu", ino);
++			inode = NULL;
++		} else
++			inode = iget(dir->i_sb, ino);
+ 
+ 		if (!inode)
+ 			return ERR_PTR(-EACCES);
+@@ -1028,7 +1033,13 @@
+ 		return ERR_PTR(-ENOENT);
+ 	ino = le32_to_cpu(de->inode);
+ 	brelse(bh);
+-	inode = iget(child->d_inode->i_sb, ino);
++
++	if (!ext3_valid_inum(child->d_inode->i_sb, ino)) {
++		ext3_error(child->d_inode->i_sb, "ext3_get_parent",
++			   "bad inode number: %lu", ino);
++		inode = NULL;
++	} else
++		inode = iget(child->d_inode->i_sb, ino);
+ 
+ 	if (!inode)
+ 		return ERR_PTR(-EACCES);
+diff -urN linux-2.6.16.27.orig/include/linux/ext3_fs.h linux-2.6.16.27/include/linux/ext3_fs.h
+--- linux-2.6.16.27.orig/include/linux/ext3_fs.h	2006-07-17 07:58:58.000000000 -0600
++++ linux-2.6.16.27/include/linux/ext3_fs.h	2006-08-13 22:57:14.000000000 -0600
+@@ -494,6 +494,15 @@
+ {
+ 	return container_of(inode, struct ext3_inode_info, vfs_inode);
+ }
++
++static inline int ext3_valid_inum(struct super_block *sb, unsigned long ino)
++{
++	return ino == EXT3_ROOT_INO ||
++		ino == EXT3_JOURNAL_INO ||
++		ino == EXT3_RESIZE_INO ||
++		(ino >= EXT3_FIRST_INO(sb) &&
++		 ino <= le32_to_cpu(EXT3_SB(sb)->s_es->s_inodes_count));
++}
+ #else
+ /* Assume that user mode programs are passing in an ext3fs superblock, not
+  * a kernel struct super_block.  This will allow us to call the feature-test

Added: dists/sid/linux-2.6.16/debian/patches/series/18
==============================================================================
--- (empty file)
+++ dists/sid/linux-2.6.16/debian/patches/series/18	Mon Aug 14 05:20:32 2006
@@ -0,0 +1 @@
++ fs-ext3-bad-nfs-handle.patch



More information about the Kernel-svn-changes mailing list