From c40a95641aa2656bdb69264f1ece8d65d72ba455 Mon Sep 17 00:00:00 2001 From: anfe <448468458@qq.com> Date: Mon, 29 Apr 2024 17:24:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=20ota=20=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E9=94=99=E8=AF=AF=E6=96=87=E4=BB=B6=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lockEscalation/lockEscalation_logic.dart | 38 ++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_logic.dart b/star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_logic.dart index 249c884c..6203045a 100644 --- a/star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_logic.dart +++ b/star_lock/lib/main/lockDetail/lockSet/lockEscalation/lockEscalation_logic.dart @@ -161,24 +161,52 @@ class LockEscalationLogic extends BaseGetXController { // 检查文件头 Future getHeadFile(Uint8List data) async { + if (data.length <= 16) { + showToast('错误D固件,请选择正确的文件'); + return null; + } // 检查文件头 - String header = utf8.decode(data.sublist(0, 12)); + String header; + try { + header = utf8.decode(data.sublist(0, 12)); + } catch (e) { + showToast('非SYD固件,请选择正确的文件'); + return null; + } if (header != 'SYD-BIN-DATA') { showToast('非SYD固件,请选择正确的文件'); return null; } // 解析元数据长度 - Uint8List metaLenList = data.sublist(12, 16); - int metaLen = ByteData.sublistView(metaLenList).getUint32(0); + Uint8List metaLenList; + int metaLen; + try { + metaLenList = data.sublist(12, 16); + metaLen = ByteData.sublistView(metaLenList).getUint32(0); + } catch (e) { + showToast('文件校验失败 0x01'); + return null; + } if (metaLen < 2 || metaLen > 10240) { showToast('文件校验失败 0x01'); return null; } // 读取和解析元数据 - Uint8List metaStrList = data.sublist(16, 16 + metaLen); - String metaStr = utf8.decode(metaStrList); + Uint8List metaStrList; + String metaStr; + try { + metaStrList = data.sublist(16, 16 + metaLen); + metaStr = utf8.decode(metaStrList); + } catch (e) { + showToast('解析元数据失败,请选择正确的文件'); + return null; + } AppLog.log(metaStr); var meta = jsonDecode(metaStr); + if (meta is! Map) { + showToast('解析元数据失败,请选择正确的文件'); + return null; + } return meta..['metaLen'] = metaLen; }