summaryrefslogtreecommitdiffstats
path: root/sys/boot/zfs
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2012-09-11 07:15:11 +0000
committeravg <avg@FreeBSD.org>2012-09-11 07:15:11 +0000
commitfa7df7dccd89de84de90f43df997994b4a2a55aa (patch)
tree1d70926293c3ae58b29d4b583d690861d306623e /sys/boot/zfs
parenta12b81402e8b7c54a8da3e987f024d29e5e89681 (diff)
downloadFreeBSD-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.c2
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);
}
OpenPOWER on IntegriCloud