diff options
author | Craig Rodrigues <rodrigc@FreeBSD.org> | 2007-07-13 18:51:08 +0000 |
---|---|---|
committer | Craig Rodrigues <rodrigc@FreeBSD.org> | 2007-07-13 18:51:08 +0000 |
commit | 7a920f57618cc6c892bedbd3e5715bedf23e38c7 (patch) | |
tree | 55da11a0cf9ff3fc57ab3d7b490e7daa1bb7adca /sys/ufs | |
parent | f24f2810ceae10af09f93564482142ebb3ae67f5 (diff) | |
download | src-7a920f57618cc6c892bedbd3e5715bedf23e38c7.tar.gz src-7a920f57618cc6c892bedbd3e5715bedf23e38c7.zip |
Perform range check before allocating memory when reading
extended attributes.
Reviewed by: kib
Approved by: re (hrs)
PR: 114389
Notes
Notes:
svn path=/head/; revision=171437
Diffstat (limited to 'sys/ufs')
-rw-r--r-- | sys/ufs/ffs/ffs_vnops.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c index b187ad70a1fa..7792cc423ea3 100644 --- a/sys/ufs/ffs/ffs_vnops.c +++ b/sys/ufs/ffs/ffs_vnops.c @@ -1192,14 +1192,18 @@ ffs_rdextattr(u_char **p, struct vnode *vp, struct thread *td, int extra) { struct inode *ip; struct ufs2_dinode *dp; + struct fs *fs; struct uio luio; struct iovec liovec; int easize, error; u_char *eae; ip = VTOI(vp); + fs = ip->i_fs; dp = ip->i_din2; easize = dp->di_extsize; + if ((uoff_t)easize + extra > NXADDR * fs->fs_bsize) + return (EFBIG); eae = malloc(easize + extra, M_TEMP, M_WAITOK); |