Доработка. Проверки длинны массива в ЯУ-07.

This commit is contained in:
MaD_CaT
2025-03-21 09:22:02 +03:00
parent d1f715c42b
commit 2bd0df53e8
2 changed files with 12 additions and 4 deletions

View File

@@ -218,6 +218,8 @@ class YaU07 extends unit.Unit:
var i: = 0
while i < ports_count:
var shift: = i * 4
if rx_data.size() < (data_pos + shift):
return false
var isa_addr = rx_data.decode_u16(addr_pos + shift) # Адрес порта ISA яу-07
var isa_data = rx_data.decode_u16(data_pos + shift) # Данные порта ISA яу-07
isa_ports[isa_addr] = isa_data
@@ -229,20 +231,28 @@ class YaU07 extends unit.Unit:
var ports_count_pos = status_len + 7 # Положение в приёмном буфере количества портов
if rx_data.size() < ports_count_pos:
return false
if rx_data.size() < (ports_count_pos + 5):
return false
var block_len = rx_data.decode_u16(ports_count_pos + 3)
var block_adr = rx_data.decode_u16(ports_count_pos + 5)
var block_data = []
for i in block_len:
var shift: int = i * 2
if rx_data.size() < (ports_count_pos + 7 + shift):
return false
block_data.append(rx_data.decode_u16(ports_count_pos + 7 + shift))
isa_block[block_adr] = block_data
return true
func parse_flash(rx_data: PackedByteArray, status_len, cmd_code) -> bool:
if cmd_code == CmdCode.READ_FLASH:
if rx_data.size() < (status_len + 14):
return false
flash_len = rx_data.decode_u16(status_len + 12)
flash_data = rx_data.slice(status_len + 14)
if cmd_code == CmdCode.READ_FLASH_MP550:
if rx_data.size() < (status_len + 15):
return false
flash_len = rx_data.decode_u16(status_len + 13)
flash_data = rx_data.slice(status_len + 15)
return true