Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 27922b4260f65d317aabda37e42bbbff > files > 1385

kernel-2.6.18-238.el5.src.rpm

From: Russell Cattelan <cattelan@redhat.com>
Subject: Re: [RHEL 5 PATCH] GFS2: BZ 217008  fsfuzzer fix.
Date: Mon, 08 Jan 2007 17:47:51 -0600
Bugzilla: 217008
Message-Id: <1168300071.5209.9.camel@xenon.msp.redhat.com>
Changelog: GFS2: return error for NULL inode

Change gfs2_lookup_simple to return an error in the case
of a NULL inode. 
The callers of gfs2_lookup_simple do not check for NULL 
in the no entry case and such would end up dereferencing a NULL ptr.

This fixes:
http://projects.info-pull.com/mokb/MOKB-15-11-2006.html

Signed-off-by: Russell Cattelan <cattelan@redhat.com>
Index: latest/fs/gfs2/inode.c
===================================================================
--- latest.orig/fs/gfs2/inode.c
+++ latest/fs/gfs2/inode.c
@@ -390,8 +390,18 @@ out:
 struct inode *gfs2_lookup_simple(struct inode *dip, const char *name)
 {
 	struct qstr qstr;
+	struct inode *inode;
 	gfs2_str2qstr(&qstr, name);
-	return gfs2_lookupi(dip, &qstr, 1, NULL);
+	inode = gfs2_lookupi(dip, &qstr, 1, NULL);
+	/* gfs2_lookupi has inconsistent callers: vfs
+	 * related routines expect NULL for no entry found,
+	 * gfs2_lookup_simple callers expect ENOENT
+	 * and do not check for NULL.
+	 */
+	if (inode == NULL)
+		return ERR_PTR(-ENOENT);
+	else
+		return inode;
 }
 
 /**