On Sat, 26 Feb 2005, Linus Torvalds wrote:
> 
> Would it not make more sense to just sanity-check the size itself, and
> throw it out if the partition size (plus start) is bigger than the disk
> size?

Something like this (TOTALLY UNTESTED AS USUAL!)?

What does fdisk and other tools do on that disk? Just out of interest..

                Linus

---
===== fs/partitions/msdos.c 1.26 vs edited =====
--- 1.26/fs/partitions/msdos.c  2004-11-09 12:43:17 -08:00
+++ edited/fs/partitions/msdos.c        2005-02-26 14:33:33 -08:00
@@ -381,6 +381,7 @@
 int msdos_partition(struct parsed_partitions *state, struct block_device *bdev)
 {
        int sector_size = bdev_hardsect_size(bdev) / 512;
+       sector_t nr_sectors;
        Sector sect;
        unsigned char *data;
        struct partition *p;
@@ -426,11 +427,12 @@
         * On the second pass look inside *BSD, Unixware and Solaris partitions.
         */
 
+       nr_sectors = get_capacity(bdev->bd_disk);
        state->next = 5;
        for (slot = 1 ; slot <= 4 ; slot++, p++) {
                u32 start = START_SECT(p)*sector_size;
                u32 size = NR_SECTS(p)*sector_size;
-               if (!size)
+               if (!size || size > nr_sectors)
                        continue;
                if (is_extended_partition(p)) {
                        /* prevent someone doing mkfs or mkswap on an
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to