diff --git a/source/arm9/firmwriter.c b/source/arm9/firmwriter.c index 883a7e8..13955f2 100644 --- a/source/arm9/firmwriter.c +++ b/source/arm9/firmwriter.c @@ -30,29 +30,30 @@ s32 writeFirmPartition(const char *const part) { - if(!dev_decnand->is_active()) return -1; + if(memcmp(part, "firm", 4) != 0) return -1; + if(!dev_decnand->is_active()) return -2; size_t partInd, sector; - if(!partitionGetIndex(part, &partInd)) return -2; - if(!partitionGetSectorOffset(partInd, §or)) return -3; + if(!partitionGetIndex(part, &partInd)) return -3; + if(!partitionGetSectorOffset(partInd, §or)) return -4; size_t firmSize; - if(!firm_size(&firmSize)) return -4; + if(!firm_size(&firmSize)) return -5; u8 *firmBuf = (u8*)FIRM_LOAD_ADDR; u8 *const cmpBuf = (u8*)malloc(FIRMWRITER_BLK_SIZE); - if(!cmpBuf) return -5; + if(!cmpBuf) return -6; while(firmSize) { const u32 writeSize = min(firmSize, FIRMWRITER_BLK_SIZE); - if(!dev_decnand->write_sector(sector, writeSize>>9, firmBuf)) return -6; - if(!dev_decnand->read_sector(sector, writeSize>>9, cmpBuf)) return -6; + if(!dev_decnand->write_sector(sector, writeSize>>9, firmBuf)) return -7; + if(!dev_decnand->read_sector(sector, writeSize>>9, cmpBuf)) return -7; if(memcmp(firmBuf, cmpBuf, writeSize) != 0) { free(cmpBuf); - return -7; + return -8; } sector += writeSize>>9;