From 2bd0df53e82cdc5e6ef77b608693d41d56601350 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Fri, 21 Mar 2025 09:22:02 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=BB=D0=B8=D0=BD=D0=BD=D1=8B=20=D0=BC=D0=B0?= =?UTF-8?q?=D1=81=D1=81=D0=B8=D0=B2=D0=B0=20=D0=B2=20=D0=AF=D0=A3-07.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/prd.gd | 6 ++---- scripts/yau07.gd | 10 ++++++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/scripts/prd.gd b/scripts/prd.gd index 4ad59d2..d09a66f 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -323,7 +323,5 @@ func update_fs_state(ecms): ## Проверяет ниличие директории, если их нет, создаёт func check_dir(): var dir = DirAccess.open(yemsconsts.emsg_files_folder) - if dir: - return - else: - DirAccess.make_dir_absolute(yemsconsts.emsg_files_folder) + if dir: return + else: DirAccess.make_dir_absolute(yemsconsts.emsg_files_folder) diff --git a/scripts/yau07.gd b/scripts/yau07.gd index 8476f95..75665a2 100644 --- a/scripts/yau07.gd +++ b/scripts/yau07.gd @@ -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