diff options
author | Kenneth R Westerback <krw@cvs.openbsd.org> | 2007-02-03 18:22:34 +0000 |
---|---|---|
committer | Kenneth R Westerback <krw@cvs.openbsd.org> | 2007-02-03 18:22:34 +0000 |
commit | 97f91a4d238d41f4e093ac5e9cd3d43354e9f057 (patch) | |
tree | c1c0620b6767f9b9d38e51e225cc92cc32c4c8e2 | |
parent | b6725843a3729f2335d4c8aae26c6686f06de48a (diff) |
Don't spoof an msdosfs partition if it claims to start after the end
of the disk. Fixes the creation of spurious 'i' partitions on new iPod
Shuffle. And other devices with no MBR, just a FAT32 filesystem.
Pointed out most recently by Stephan A. Rickauer for his sixth
generation, clip-on iPod shuffle.
Fix tested by Stephan.
ok pedro@ tom@ miod@ 'nice' deraadt@
-rw-r--r-- | sys/arch/alpha/alpha/disksubr.c | 4 | ||||
-rw-r--r-- | sys/arch/amd64/amd64/disksubr.c | 4 | ||||
-rw-r--r-- | sys/arch/arm/arm/disksubr.c | 4 | ||||
-rw-r--r-- | sys/arch/aviion/aviion/disksubr.c | 4 | ||||
-rw-r--r-- | sys/arch/hppa/hppa/disksubr.c | 4 | ||||
-rw-r--r-- | sys/arch/hppa64/hppa64/disksubr.c | 4 | ||||
-rw-r--r-- | sys/arch/i386/i386/disksubr.c | 4 | ||||
-rw-r--r-- | sys/arch/landisk/landisk/disksubr.c | 4 | ||||
-rw-r--r-- | sys/arch/macppc/macppc/disksubr.c | 4 | ||||
-rw-r--r-- | sys/arch/mips64/mips64/disksubr.c | 4 | ||||
-rw-r--r-- | sys/arch/mvmeppc/mvmeppc/disksubr.c | 4 |
11 files changed, 33 insertions, 11 deletions
diff --git a/sys/arch/alpha/alpha/disksubr.c b/sys/arch/alpha/alpha/disksubr.c index 84cdd9e5a3b..5c46a1ed150 100644 --- a/sys/arch/alpha/alpha/disksubr.c +++ b/sys/arch/alpha/alpha/disksubr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: disksubr.c,v 1.64 2006/10/28 23:26:05 krw Exp $ */ +/* $OpenBSD: disksubr.c,v 1.65 2007/02/03 18:22:33 krw Exp $ */ /* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */ /* @@ -307,6 +307,8 @@ donot: continue; if (letoh32(dp2->dp_size) > lp->d_secperunit) continue; + if (letoh32(dp2->dp_start) > lp->d_secperunit) + continue; if (letoh32(dp2->dp_size) == 0) continue; if (letoh32(dp2->dp_start)) diff --git a/sys/arch/amd64/amd64/disksubr.c b/sys/arch/amd64/amd64/disksubr.c index c3ecf79b056..af07238bff7 100644 --- a/sys/arch/amd64/amd64/disksubr.c +++ b/sys/arch/amd64/amd64/disksubr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: disksubr.c,v 1.28 2007/01/15 23:19:05 jsg Exp $ */ +/* $OpenBSD: disksubr.c,v 1.29 2007/02/03 18:22:33 krw Exp $ */ /* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */ /* @@ -162,6 +162,8 @@ donot: continue; if (letoh32(dp2->dp_size) > lp->d_secperunit) continue; + if (letoh32(dp2->dp_start) > lp->d_secperunit) + continue; if (letoh32(dp2->dp_size) == 0) continue; if (letoh32(dp2->dp_start)) diff --git a/sys/arch/arm/arm/disksubr.c b/sys/arch/arm/arm/disksubr.c index 376078e6a71..c4d6176677f 100644 --- a/sys/arch/arm/arm/disksubr.c +++ b/sys/arch/arm/arm/disksubr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: disksubr.c,v 1.24 2006/10/29 00:02:35 krw Exp $ */ +/* $OpenBSD: disksubr.c,v 1.25 2007/02/03 18:22:33 krw Exp $ */ /* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */ /* @@ -166,6 +166,8 @@ donot: continue; if (letoh32(dp2->dp_size) > lp->d_secperunit) continue; + if (letoh32(dp2->dp_start) > lp->d_secperunit) + continue; if (letoh32(dp2->dp_size) == 0) continue; if (letoh32(dp2->dp_start)) diff --git a/sys/arch/aviion/aviion/disksubr.c b/sys/arch/aviion/aviion/disksubr.c index 37fda9ee676..3a439fbae1b 100644 --- a/sys/arch/aviion/aviion/disksubr.c +++ b/sys/arch/aviion/aviion/disksubr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: disksubr.c,v 1.15 2006/10/29 00:02:35 krw Exp $ */ +/* $OpenBSD: disksubr.c,v 1.16 2007/02/03 18:22:33 krw Exp $ */ /* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */ /* @@ -166,6 +166,8 @@ donot: continue; if (letoh32(dp2->dp_size) > lp->d_secperunit) continue; + if (letoh32(dp2->dp_start) > lp->d_secperunit) + continue; if (letoh32(dp2->dp_size) == 0) continue; if (letoh32(dp2->dp_start)) diff --git a/sys/arch/hppa/hppa/disksubr.c b/sys/arch/hppa/hppa/disksubr.c index 2b2d228f142..e49725c7afd 100644 --- a/sys/arch/hppa/hppa/disksubr.c +++ b/sys/arch/hppa/hppa/disksubr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: disksubr.c,v 1.44 2006/10/28 23:26:05 krw Exp $ */ +/* $OpenBSD: disksubr.c,v 1.45 2007/02/03 18:22:33 krw Exp $ */ /* * Copyright (c) 1999 Michael Shalayeff @@ -310,6 +310,8 @@ donot: continue; if (letoh32(dp2->dp_size) > lp->d_secperunit) continue; + if (letoh32(dp2->dp_start) > lp->d_secperunit) + continue; if (letoh32(dp2->dp_size) == 0) continue; if (letoh32(dp2->dp_start)) diff --git a/sys/arch/hppa64/hppa64/disksubr.c b/sys/arch/hppa64/hppa64/disksubr.c index 4f933fd0387..78d2fee78c8 100644 --- a/sys/arch/hppa64/hppa64/disksubr.c +++ b/sys/arch/hppa64/hppa64/disksubr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: disksubr.c,v 1.27 2006/10/28 23:26:05 krw Exp $ */ +/* $OpenBSD: disksubr.c,v 1.28 2007/02/03 18:22:33 krw Exp $ */ /* * Copyright (c) 1999 Michael Shalayeff @@ -306,6 +306,8 @@ donot: continue; if (letoh32(dp2->dp_size) > lp->d_secperunit) continue; + if (letoh32(dp2->dp_start) > lp->d_secperunit) + continue; if (letoh32(dp2->dp_size) == 0) continue; if (letoh32(dp2->dp_start)) diff --git a/sys/arch/i386/i386/disksubr.c b/sys/arch/i386/i386/disksubr.c index e06a6abcd5d..566533a4a13 100644 --- a/sys/arch/i386/i386/disksubr.c +++ b/sys/arch/i386/i386/disksubr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: disksubr.c,v 1.68 2006/10/29 00:02:35 krw Exp $ */ +/* $OpenBSD: disksubr.c,v 1.69 2007/02/03 18:22:33 krw Exp $ */ /* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */ /* @@ -162,6 +162,8 @@ donot: continue; if (letoh32(dp2->dp_size) > lp->d_secperunit) continue; + if (letoh32(dp2->dp_start) > lp->d_secperunit) + continue; if (letoh32(dp2->dp_size) == 0) continue; if (letoh32(dp2->dp_start)) diff --git a/sys/arch/landisk/landisk/disksubr.c b/sys/arch/landisk/landisk/disksubr.c index 9ea6931b274..a3251e2d058 100644 --- a/sys/arch/landisk/landisk/disksubr.c +++ b/sys/arch/landisk/landisk/disksubr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: disksubr.c,v 1.12 2006/10/29 00:02:35 krw Exp $ */ +/* $OpenBSD: disksubr.c,v 1.13 2007/02/03 18:22:33 krw Exp $ */ /* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */ /* @@ -166,6 +166,8 @@ donot: continue; if (letoh32(dp2->dp_size) > lp->d_secperunit) continue; + if (letoh32(dp2->dp_start) > lp->d_secperunit) + continue; if (letoh32(dp2->dp_size) == 0) continue; if (letoh32(dp2->dp_start)) diff --git a/sys/arch/macppc/macppc/disksubr.c b/sys/arch/macppc/macppc/disksubr.c index b018f22abb1..18d432cd113 100644 --- a/sys/arch/macppc/macppc/disksubr.c +++ b/sys/arch/macppc/macppc/disksubr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: disksubr.c,v 1.34 2006/10/29 00:02:35 krw Exp $ */ +/* $OpenBSD: disksubr.c,v 1.35 2007/02/03 18:22:33 krw Exp $ */ /* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */ /* @@ -252,6 +252,8 @@ donot: continue; if (letoh32(dp2->dp_size) > lp->d_secperunit) continue; + if (letoh32(dp2->dp_start) > lp->d_secperunit) + continue; if (letoh32(dp2->dp_size) == 0) continue; if (letoh32(dp2->dp_start)) diff --git a/sys/arch/mips64/mips64/disksubr.c b/sys/arch/mips64/mips64/disksubr.c index 8d0af4f699d..42d8c8f1857 100644 --- a/sys/arch/mips64/mips64/disksubr.c +++ b/sys/arch/mips64/mips64/disksubr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: disksubr.c,v 1.33 2006/10/28 23:26:05 krw Exp $ */ +/* $OpenBSD: disksubr.c,v 1.34 2007/02/03 18:22:33 krw Exp $ */ /* * Copyright (c) 1999 Michael Shalayeff @@ -314,6 +314,8 @@ donot: continue; if (letoh32(dp2->dp_size) > lp->d_secperunit) continue; + if (letoh32(dp2->dp_start) > lp->d_secperunit) + continue; if (letoh32(dp2->dp_size) == 0) continue; if (letoh32(dp2->dp_start)) diff --git a/sys/arch/mvmeppc/mvmeppc/disksubr.c b/sys/arch/mvmeppc/mvmeppc/disksubr.c index 2fdc5192428..45473b054b9 100644 --- a/sys/arch/mvmeppc/mvmeppc/disksubr.c +++ b/sys/arch/mvmeppc/mvmeppc/disksubr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: disksubr.c,v 1.30 2006/10/29 00:02:35 krw Exp $ */ +/* $OpenBSD: disksubr.c,v 1.31 2007/02/03 18:22:33 krw Exp $ */ /* $NetBSD: disksubr.c,v 1.21 1996/05/03 19:42:03 christos Exp $ */ /* @@ -169,6 +169,8 @@ donot: continue; if (letoh32(dp2->dp_size) > lp->d_secperunit) continue; + if (letoh32(dp2->dp_start) > lp->d_secperunit) + continue; if (letoh32(dp2->dp_size) == 0) continue; if (letoh32(dp2->dp_start)) |