summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>1997-10-18 10:35:00 +0000
committerderaadt <deraadt@openbsd.org>1997-10-18 10:35:00 +0000
commita6468c276827257dc73a5ab2e9f98d964e3e34c8 (patch)
treeb8bf428f83950357a867574b9425b2f399e31ee4
parentupdate. (diff)
downloadwireguard-openbsd-a6468c276827257dc73a5ab2e9f98d964e3e34c8.tar.xz
wireguard-openbsd-a6468c276827257dc73a5ab2e9f98d964e3e34c8.zip
do not create spoofed partition for DOSTYP_OPENBSD
-rw-r--r--sys/arch/arc/arc/disksubr.c4
-rw-r--r--sys/arch/i386/i386/disksubr.c4
-rw-r--r--sys/arch/powerpc/powerpc/disksubr.c18
3 files changed, 20 insertions, 6 deletions
diff --git a/sys/arch/arc/arc/disksubr.c b/sys/arch/arc/arc/disksubr.c
index 05119ae3251..f3eb32aca89 100644
--- a/sys/arch/arc/arc/disksubr.c
+++ b/sys/arch/arc/arc/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.18 1997/10/02 00:50:53 deraadt Exp $ */
+/* $OpenBSD: disksubr.c,v 1.19 1997/10/18 10:35:02 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */
/*
@@ -180,6 +180,8 @@ donot:
for (dp2=dp, i=0; i < NDOSPART && n < 8; i++, dp2++) {
struct partition *pp = &lp->d_partitions[8+n];
+ if (dp2->dp_typ == DOSPTYP_OPENBSD)
+ continue;
if (get_le(&dp2->dp_size) > lp->d_secperunit)
continue;
if (get_le(&dp2->dp_size))
diff --git a/sys/arch/i386/i386/disksubr.c b/sys/arch/i386/i386/disksubr.c
index 239e60cc3a0..7c9a8ae8bc6 100644
--- a/sys/arch/i386/i386/disksubr.c
+++ b/sys/arch/i386/i386/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.27 1997/10/02 00:50:51 deraadt Exp $ */
+/* $OpenBSD: disksubr.c,v 1.28 1997/10/18 10:35:00 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */
/*
@@ -180,6 +180,8 @@ donot:
for (dp2=dp, i=0; i < NDOSPART && n < 8; i++, dp2++) {
struct partition *pp = &lp->d_partitions[8+n];
+ if (dp2->dp_typ == DOSPTYP_OPENBSD)
+ continue;
if (get_le(&dp2->dp_size) > lp->d_secperunit)
continue;
if (get_le(&dp2->dp_size))
diff --git a/sys/arch/powerpc/powerpc/disksubr.c b/sys/arch/powerpc/powerpc/disksubr.c
index b405e2518f0..45398858d1d 100644
--- a/sys/arch/powerpc/powerpc/disksubr.c
+++ b/sys/arch/powerpc/powerpc/disksubr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disksubr.c,v 1.6 1997/10/14 17:11:12 pefo Exp $ */
+/* $OpenBSD: disksubr.c,v 1.7 1997/10/18 10:35:04 deraadt Exp $ */
/* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */
/*
@@ -139,7 +139,7 @@ readdisklabel(dev, strat, lp, osdep)
bcopy(bp->b_data + DOSPARTOFF, dp, NDOSPART * sizeof(*dp));
if (ourpart == -1) {
- /* Search for our DOS partition */
+ /* Search for our MBR partition */
for (dp2=dp, i=0; i < NDOSPART && ourpart == -1;
i++, dp2++)
if (get_le(&dp2->dp_size) &&
@@ -153,7 +153,7 @@ readdisklabel(dev, strat, lp, osdep)
if (ourpart == -1)
goto donot;
/*
- * This is our DOS partition. need sector address
+ * This is our MBR partition. need sector address
* for SCSI/IDE, cylinder for ESDI/ST506/RLL
*/
dp2 = &dp[ourpart];
@@ -180,6 +180,10 @@ donot:
for (dp2=dp, i=0; i < NDOSPART && n < 8; i++, dp2++) {
struct partition *pp = &lp->d_partitions[8+n];
+ if (dp2->dp_typ == DOSPTYP_OPENBSD)
+ continue;
+ if (get_le(&dp2->dp_size) > lp->d_secperunit)
+ continue;
if (get_le(&dp2->dp_size))
pp->p_size = get_le(&dp2->dp_size);
if (get_le(&dp2->dp_start))
@@ -448,7 +452,13 @@ writedisklabel(dev, strat, lp, osdep)
goto done;
}
}
- error = ESRCH;
+
+ /* Write it in the regular place. */
+ *(struct disklabel *)bp->b_data = *lp;
+ bp->b_flags = B_BUSY | B_WRITE;
+ (*strat)(bp);
+ error = biowait(bp);
+ goto done;
done:
bp->b_flags |= B_INVAL;