diff options
author | avg <avg@FreeBSD.org> | 2012-09-11 07:15:11 +0000 |
---|---|---|
committer | avg <avg@FreeBSD.org> | 2012-09-11 07:15:11 +0000 |
commit | fa7df7dccd89de84de90f43df997994b4a2a55aa (patch) | |
tree | 1d70926293c3ae58b29d4b583d690861d306623e /sys/boot/zfs | |
parent | a12b81402e8b7c54a8da3e987f024d29e5e89681 (diff) | |
download | FreeBSD-src-fa7df7dccd89de84de90f43df997994b4a2a55aa.zip FreeBSD-src-fa7df7dccd89de84de90f43df997994b4a2a55aa.tar.gz |
zfs boot: add a size check for a value in fzap_lookup
MFC after: 25 days
Diffstat (limited to 'sys/boot/zfs')
-rw-r--r-- | sys/boot/zfs/zfsimpl.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/boot/zfs/zfsimpl.c b/sys/boot/zfs/zfsimpl.c index 251f97e..d387a6e 100644 --- a/sys/boot/zfs/zfsimpl.c +++ b/sys/boot/zfs/zfsimpl.c @@ -1355,6 +1355,8 @@ fzap_lookup(const spa_t *spa, const dnode_phys_t *dnode, const char *name, uint6 zc = &ZAP_LEAF_CHUNK(&zl, zc->l_entry.le_next); } if (fzap_name_equal(&zl, zc, name)) { + if (zc->l_entry.le_value_intlen * zc->l_entry.le_value_numints > 8) + return (E2BIG); *value = fzap_leaf_value(&zl, zc); return (0); } |