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;
|
return test;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool corrupted = false;
|
||||||
|
|
||||||
struct Message {
|
struct Message {
|
||||||
le s32 messageNum;
|
le s32 messageNum;
|
||||||
le s32 len;
|
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];
|
u8 data[len];
|
||||||
if( len>=10){ // should usually be true unless corrupted
|
if( len>=10){ // should usually be true unless corrupted
|
||||||
|
|
||||||
@@ -189,7 +194,7 @@ namespace format {
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct Q3Demo {
|
struct Q3Demo {
|
||||||
Message messages[while(!std::mem::eof())];
|
Message messages[while(!std::mem::eof() && !corrupted)];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user