summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rbutil/rbutilqt/base/bootloaderinstallsansa.cpp17
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);