From 4df0c7795407966afb468a941aae1ea695d70cae Mon Sep 17 00:00:00 2001 From: Dave Chapman Date: Tue, 22 May 2007 19:07:45 +0000 Subject: Remove the check for ipod-specific magic in the MBR (which caused problems when users repartitioned their ipods and removed that magic) and instead check that the partition layout looks like an ipod. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13469 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/ipodpatcher/ipodpatcher.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'rbutil/ipodpatcher/ipodpatcher.c') diff --git a/rbutil/ipodpatcher/ipodpatcher.c b/rbutil/ipodpatcher/ipodpatcher.c index 331c7f0322..2be6d2333c 100644 --- a/rbutil/ipodpatcher/ipodpatcher.c +++ b/rbutil/ipodpatcher/ipodpatcher.c @@ -172,12 +172,6 @@ int read_partinfo(struct ipod_t* ipod, int silent) if ((sectorbuf[510] == 0x55) && (sectorbuf[511] == 0xaa)) { /* DOS partition table */ - if ((memcmp(§orbuf[71],"iPod",4) != 0) && - (memcmp(§orbuf[0x40],"This is your Apple iPod. You probably do not want to boot from it!",66) != 0) ) { - if (!silent) fprintf(stderr,"[ERR] Drive is not an iPod, aborting\n"); - return -1; - } - ipod->macpod = 0; /* parse partitions */ for ( i = 0; i < 4; i++ ) { @@ -259,6 +253,16 @@ int read_partinfo(struct ipod_t* ipod, int silent) return -1; } + /* Check that the partition table looks like an ipod: + 1) Partition 1 is of type 0 (Empty) but isn't empty. + 2) Partition 2 is of type 0xb (winpod) or -1 (macpod) + */ + if ((ipod->pinfo[0].type != 0) || (ipod->pinfo[0].size == 0) || + ((ipod->pinfo[1].type != 0xb) && (ipod->pinfo[1].type != -1))) { + if (!silent) fprintf(stderr,"[ERR] Partition layout is not an ipod\n"); + return -1; + } + ipod->start = ipod->pinfo[0].start*ipod->sector_size; return 0; } -- cgit v1.2.3