@@ -181,7 +181,7 @@ static void queuePatch(Binary *B, Instr *I, const Trampoline *T)
181181 */
182182static Binary *parseBinary (const Message &msg)
183183{
184- const char *filename = nullptr ;
184+ const char *filename = nullptr , *version = nullptr ;
185185 Mode mode = MODE_ELF_EXE;
186186 bool have_mode = false , dup = false ;
187187 for (unsigned i = 0 ; i < msg.num_params ; i++)
@@ -197,13 +197,24 @@ static Binary *parseBinary(const Message &msg)
197197 mode = (Mode)msg.params [i].value .integer ;
198198 have_mode = true ;
199199 break ;
200+ case PARAM_VERSION:
201+ dup = dup || (version != nullptr );
202+ version = msg.params [i].value .string ;
203+ break ;
200204 default :
201205 break ;
202206 }
203207 }
204208 if (filename == nullptr )
205209 error (" failed to parse \" binary\" message (id=%u); missing "
206210 " \" filename\" parameter" , msg.id );
211+ if (version == nullptr )
212+ error (" failed to parse \" binary\" message (id=%u); missing "
213+ " \" version\" parameter" , msg.id );
214+ if (strcmp (version, STRING (VERSION)) != 0 )
215+ error (" failed to parse \" binary\" message (id=%u); invalid "
216+ " version \" %s\" ; expected \" %s\" " , msg.id , version,
217+ STRING (VERSION));
207218 if (dup)
208219 error (" failed to parse \" binary\" message (id=%u); duplicate "
209220 " parameters detected" , msg.id );
0 commit comments