summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth R Westerback <krw@cvs.openbsd.org>2011-06-20 19:10:42 +0000
committerKenneth R Westerback <krw@cvs.openbsd.org>2011-06-20 19:10:42 +0000
commit7524ae50770c7f7b472558d9bfa36036d44ae25f (patch)
treedd07103a3e239beae6b34f0b77fe2fa9c546c042
parent1997f5089949283305da3e710ffc85a38883e10f (diff)
MBR_read() can be reading from a file as well as a raw partition.
And files can be smaller (e.g. 512 bytes like /usr/mdec/mbr) than a disk sector (e.g. 4096 bytes on pirofti's external disk drive). So relax the length test on the read() result to < DEV_BSIZE (the amount of data we actually want) instead of < secsize (the minimum size that read() will accept). 'fdisk -e' and 'fdisk -i' now work on devices with sector sizes greater than DEV_BSIZE.
-rw-r--r--sbin/fdisk/mbr.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sbin/fdisk/mbr.c b/sbin/fdisk/mbr.c
index b8cbec17126..b8f05bdded4 100644
--- a/sbin/fdisk/mbr.c
+++ b/sbin/fdisk/mbr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mbr.c,v 1.26 2011/02/21 19:26:13 krw Exp $ */
+/* $OpenBSD: mbr.c,v 1.27 2011/06/20 19:10:41 krw Exp $ */
/*
* Copyright (c) 1997 Tobias Weingartner
@@ -169,7 +169,7 @@ MBR_read(int fd, off_t where, char *buf)
if (len == -1)
return (-1);
- if (len != secsize) {
+ if (len < DEV_BSIZE) {
/* short read */
errno = EIO;
return (-1);