mirror of
https://github.com/WerWolv/ImHex-Patterns.git
synced 2026-03-27 23:37:04 -05:00
patterns/q3demo: Quake 3 demos: Handle corrupted files more gracefully (#414)
Quake 3 demos: Basic safeguard against corrupted files Co-authored-by: Tom <tomarrowtomarrow@hotmail.com>
This commit is contained in:
@@ -118,10 +118,15 @@ fn readString(ref auto data, s32 len, s32 bitindex){
|
||||
return test;
|
||||
};
|
||||
|
||||
bool corrupted = false;
|
||||
|
||||
struct Message {
|
||||
le s32 messageNum;
|
||||
le s32 len;
|
||||
if(len != FINAL_DEMO_MESSAGE_LENGTH || messageNum != FINAL_DEMO_MESSAGE_NUMBER) {
|
||||
if(len+$ > std::mem::size()){
|
||||
corrupted = true;
|
||||
}
|
||||
if(!corrupted && (len != FINAL_DEMO_MESSAGE_LENGTH || messageNum != FINAL_DEMO_MESSAGE_NUMBER)) {
|
||||
u8 data[len];
|
||||
if( len>=10){ // should usually be true unless corrupted
|
||||
|
||||
@@ -189,7 +194,7 @@ namespace format {
|
||||
}
|
||||
|
||||
struct Q3Demo {
|
||||
Message messages[while(!std::mem::eof())];
|
||||
Message messages[while(!std::mem::eof() && !corrupted)];
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user