Author: ae
Date: Sun May  8 12:16:39 2011
New Revision: 221654
URL: http://svn.freebsd.org/changeset/base/221654

Log:
  Limit number of sectors that can be addressed.
  Reject table if blkcount from metadata is greater than provider.

Modified:
  head/sys/geom/part/g_part_apm.c

Modified: head/sys/geom/part/g_part_apm.c
==============================================================================
--- head/sys/geom/part/g_part_apm.c     Sun May  8 12:11:20 2011        
(r221653)
+++ head/sys/geom/part/g_part_apm.c     Sun May  8 12:16:39 2011        
(r221654)
@@ -255,7 +255,7 @@ g_part_apm_create(struct g_part_table *b
                return (ENOSPC);
 
        /* APM uses 32-bit LBAs. */
-       last = MIN(pp->mediasize / pp->sectorsize, 0xffffffff) - 1;
+       last = MIN(pp->mediasize / pp->sectorsize, UINT32_MAX) - 1;
 
        basetable->gpt_first = 2 + basetable->gpt_entries;
        basetable->gpt_last = last;
@@ -398,6 +398,8 @@ g_part_apm_probe(struct g_part_table *ba
                g_free(buf);
                if (table->ddr.ddr_blksize != pp->sectorsize)
                        return (ENXIO);
+               if (table->ddr.ddr_blkcount > pp->mediasize / pp->sectorsize)
+                       return (ENXIO);
        } else {
                /*
                 * Check for Tivo drives, which have no DDR and a different
@@ -412,7 +414,8 @@ g_part_apm_probe(struct g_part_table *ba
                }
                table->ddr.ddr_sig = APM_DDR_SIG;               /* XXX */
                table->ddr.ddr_blksize = pp->sectorsize;        /* XXX */
-               table->ddr.ddr_blkcount = pp->mediasize / pp->sectorsize;/* XXX 
*/
+               table->ddr.ddr_blkcount =
+                   MIN(pp->mediasize / pp->sectorsize, UINT32_MAX);
                table->tivo_series1 = 1;
                g_free(buf);
        }
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to