diff options
author | dumbbell <dumbbell@FreeBSD.org> | 2013-03-08 18:07:43 +0000 |
---|---|---|
committer | dumbbell <dumbbell@FreeBSD.org> | 2013-03-08 18:07:43 +0000 |
commit | bd2d452e4e03288c7afbad4522cdf38f1daf45e8 (patch) | |
tree | 105a7f0c30b49c3aaac16c2c1c7054b214ba8e54 /sys/geom/label | |
parent | 5f30e9f144548ef5d2a3dd7f42b0ffad17a97b48 (diff) | |
download | FreeBSD-src-bd2d452e4e03288c7afbad4522cdf38f1daf45e8.zip FreeBSD-src-bd2d452e4e03288c7afbad4522cdf38f1daf45e8.tar.gz |
g_label_ntfs_taste: Abort taste is recsize == 0
This will avoid a 0-byte read (in g_read_data()) leading to a panic, if
previously read data are erroneous.
Suggested by: John-Mark Gurney <jmg@funkthat.com>
Diffstat (limited to 'sys/geom/label')
-rw-r--r-- | sys/geom/label/g_label_ntfs.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/geom/label/g_label_ntfs.c b/sys/geom/label/g_label_ntfs.c index 1ed4a07..e2c84cd 100644 --- a/sys/geom/label/g_label_ntfs.c +++ b/sys/geom/label/g_label_ntfs.c @@ -115,7 +115,7 @@ g_label_ntfs_taste(struct g_consumer *cp, char *label, size_t size) mftrecsz = (char)bf->bf_mftrecsz; recsize = (mftrecsz > 0) ? (mftrecsz * bf->bf_bps * bf->bf_spc) : (1 << -mftrecsz); - if (recsize % pp->sectorsize != 0) + if (recsize == 0 || recsize % pp->sectorsize != 0) goto done; voloff = bf->bf_mftcn * bf->bf_spc * bf->bf_bps + |