diff options
| author | Dan Carpenter <error27@gmail.com> | 2010-07-13 13:34:59 +0200 | 
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2010-07-30 15:33:39 -0400 | 
| commit | 674b2222920012244ca59978b356b25412a8dcc7 (patch) | |
| tree | 01b3673031df1fb3b9a3f5c8f3394f1c0036dde6 /fs/nfs/nfsroot.c | |
| parent | a2dccdb2055abeb8a7ce8e45e5f83de9c980a00c (diff) | |
| download | olio-linux-3.10-674b2222920012244ca59978b356b25412a8dcc7.tar.xz olio-linux-3.10-674b2222920012244ca59978b356b25412a8dcc7.zip  | |
nfs: include space for the NUL in root path
In root_nfs_name() it does the following:
        if (strlen(buf) + strlen(cp) > NFS_MAXPATHLEN) {
                printk(KERN_ERR "Root-NFS: Pathname for remote directory too long.\n");
                return -1;
        }
        sprintf(nfs_export_path, buf, cp);
In the original code if (strlen(buf) + strlen(cp) == NFS_MAXPATHLEN)
then the sprintf() would lead to an overflow.  Generally the rest of the
code assumes that the path can have NFS_MAXPATHLEN (1024) characters and
a NUL terminator so the fix is to add space to the nfs_export_path[]
buffer.
Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfsroot.c')
| -rw-r--r-- | fs/nfs/nfsroot.c | 2 | 
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/nfs/nfsroot.c b/fs/nfs/nfsroot.c index 6bd19d843af..df101d9f546 100644 --- a/fs/nfs/nfsroot.c +++ b/fs/nfs/nfsroot.c @@ -105,7 +105,7 @@ static char nfs_root_name[256] __initdata = "";  static __be32 servaddr __initdata = 0;  /* Name of directory to mount */ -static char nfs_export_path[NFS_MAXPATHLEN] __initdata = { 0, }; +static char nfs_export_path[NFS_MAXPATHLEN + 1] __initdata = { 0, };  /* NFS-related data */  static struct nfs_mount_data nfs_data __initdata = { 0, };/* NFS mount info */  |