diff options
-rw-r--r-- | rbutil/rbutilqt/base/bootloaderinstallsansa.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/rbutil/rbutilqt/base/bootloaderinstallsansa.cpp b/rbutil/rbutilqt/base/bootloaderinstallsansa.cpp index a78f336144..4679c2e9a8 100644 --- a/rbutil/rbutilqt/base/bootloaderinstallsansa.cpp +++ b/rbutil/rbutilqt/base/bootloaderinstallsansa.cpp | |||
@@ -122,9 +122,26 @@ void BootloaderInstallSansa::installStage2(void) | |||
122 | return; | 122 | return; |
123 | } | 123 | } |
124 | 124 | ||
125 | // check model -- if sansapatcher reports a c200 don't install an e200 | ||
126 | // bootloader and vice versa. | ||
127 | // The model is available in the mi4 file at offset 0x1fc and matches | ||
128 | // the targetname set by sansapatcher. | ||
129 | emit logItem(tr("Checking downloaded bootloader"), LOGINFO); | ||
125 | m_tempfile.open(); | 130 | m_tempfile.open(); |
126 | QString blfile = m_tempfile.fileName(); | 131 | QString blfile = m_tempfile.fileName(); |
132 | char magic[4]; | ||
133 | m_tempfile.seek(0x1fc); | ||
134 | m_tempfile.read(magic, 4); | ||
127 | m_tempfile.close(); | 135 | m_tempfile.close(); |
136 | if(memcmp(sansa.targetname, magic, 4) != 0) { | ||
137 | emit logItem(tr("Bootloader mismatch! Aborting."), LOGERROR); | ||
138 | qDebug("[BL-Sansa] Targetname: %s, mi4 magic: %c%c%c%c", | ||
139 | sansa.targetname, magic[0], magic[1], magic[2], magic[3]); | ||
140 | emit done(true); | ||
141 | sansa_close(&sansa); | ||
142 | return; | ||
143 | } | ||
144 | |||
128 | if(sansa_add_bootloader(&sansa, blfile.toLatin1().data(), | 145 | if(sansa_add_bootloader(&sansa, blfile.toLatin1().data(), |
129 | FILETYPE_MI4) == 0) { | 146 | FILETYPE_MI4) == 0) { |
130 | emit logItem(tr("Successfully installed bootloader"), LOGOK); | 147 | emit logItem(tr("Successfully installed bootloader"), LOGOK); |