mcsParser: check if _bit_data size is not larger than bitstream

This commit is contained in:
Gwenhael Goavec-Merou 2025-03-21 06:47:30 +01:00
parent 4c4f48ea93
commit 671224a544
1 changed files with 2 additions and 2 deletions

View File

@ -92,10 +92,10 @@ int McsParser::parse()
case 4:
sscanf((char*)&str[DATA_BASE], "%4x", &loc_addr);
_base_addr = (loc_addr << 16);
if ((size_t)_base_addr > _bit_data.size())
_bit_data.resize(_base_addr);
if (_base_addr * 8 > _bit_length)
_bit_length = _base_addr * 8;
if (_bit_length > _bit_data.size() * 8)
_bit_data.resize(_bit_length / 8);
sum += (loc_addr & 0xff) + ((loc_addr >> 8) & 0xff);
break;
default: