aboutsummaryrefslogtreecommitdiff
path: root/sys/ufs
diff options
context:
space:
mode:
authorCraig Rodrigues <rodrigc@FreeBSD.org>2007-07-13 18:51:08 +0000
committerCraig Rodrigues <rodrigc@FreeBSD.org>2007-07-13 18:51:08 +0000
commit7a920f57618cc6c892bedbd3e5715bedf23e38c7 (patch)
tree55da11a0cf9ff3fc57ab3d7b490e7daa1bb7adca /sys/ufs
parentf24f2810ceae10af09f93564482142ebb3ae67f5 (diff)
downloadsrc-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.c4
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);