Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 May 2011 12:16:39 +0000 (UTC)
From:      "Andrey V. Elsukov" <ae@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r221654 - head/sys/geom/part
Message-ID:  <201105081216.p48CGdd5045572@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201105081216.p48CGdd5045572>