summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatthew <matthew@openbsd.org>2012-04-25 04:21:45 +0000
committermatthew <matthew@openbsd.org>2012-04-25 04:21:45 +0000
commitf11028209884fa6950f17b7414ac324e5c2ca567 (patch)
tree5091ddd71d3fd4bf30a9fac6bcb55b9929ef632c
parentUse explicit_bzero() for clearing key material. (diff)
downloadwireguard-openbsd-f11028209884fa6950f17b7414ac324e5c2ca567.tar.xz
wireguard-openbsd-f11028209884fa6950f17b7414ac324e5c2ca567.zip
Before writing it to disk, warn the user if their new MBR contains
more than one OpenBSD partition. ok deraadt
-rw-r--r--sbin/fdisk/cmd.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/sbin/fdisk/cmd.c b/sbin/fdisk/cmd.c
index d7cf3498cd9..91fd9113ac8 100644
--- a/sbin/fdisk/cmd.c
+++ b/sbin/fdisk/cmd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd.c,v 1.46 2011/11/11 18:21:06 krw Exp $ */
+/* $OpenBSD: cmd.c,v 1.47 2012/04/25 04:21:45 matthew Exp $ */
/*
* Copyright (c) 1997 Tobias Weingartner
@@ -328,7 +328,16 @@ int
Xwrite(cmd_t *cmd, disk_t *disk, mbr_t *mbr, mbr_t *tt, int offset)
{
char mbr_buf[DEV_BSIZE];
- int fd;
+ int fd, i, n;
+
+ for (i = 0, n = 0; i < NDOSPART; i++)
+ if (mbr->part[i].id == 0xA6)
+ n++;
+ if (n >= 2) {
+ warnx("MBR contains more than one OpenBSD partition!");
+ if (!ask_yn("Write MBR anyway?"))
+ return (CMD_CONT);
+ }
fd = DISK_open(disk->name, O_RDWR);
MBR_make(mbr, mbr_buf);