From 437d3d047183eed3bbd8eb79e4b40c4a1e0427c9 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期四, 15 一月 2026 10:39:31 +0800
Subject: [PATCH] 1.修复: CEID 校验恒通过:ceidDefined 返回 true,PauseEvent ID 不做有效性检查。Host 若下发无效 CEID,将被接受但运行时无法触发暂停,风险难以察觉。 指定事件发生时暂停;
---
SourceCode/Bond/Servo/Model.cpp | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/Servo/Model.cpp b/SourceCode/Bond/Servo/Model.cpp
index f571def..3bc322e 100644
--- a/SourceCode/Bond/Servo/Model.cpp
+++ b/SourceCode/Bond/Servo/Model.cpp
@@ -233,6 +233,11 @@
// 鐪熸鐨勨�滃紑濮嬧�濈敱 ProceedWithSlotMap 鍐崇瓥瑙﹀彂銆�
// 浠呭綋鏈紑鍚� CompareMapsBeforeProceeding 鏃讹紝鎵嶆部鐢ㄦ棫閫昏緫鐩存帴 Start銆�
LOGI("<CModel>ProceedWithCarrier");
+ if (m_master.getControlJob() == nullptr || m_master.isProcessJobsEmpty()) {
+ strErrorTxt = "rejected - ControlJob/ProcessJob not ready";
+ LOGW("<CModel>ProceedWithCarrier rejected: no CJ/PJ, port=%d", portIndex + 1);
+ return CAACK_5;
+ }
if (pLoadPort == nullptr || !pLoadPort->isCompareMapsBeforeProceeding()) {
m_master.proceedWithCarrier(portIndex);
}
@@ -310,6 +315,15 @@
m_hsmsPassive.loadReports((LPTSTR)(LPCTSTR)strVarialbleFile);
strVarialbleFile.Format(_T("%s\\CollectionEventList.txt"), (LPTSTR)(LPCTSTR)m_strWorkDir);
m_hsmsPassive.loadCollectionEvents((LPTSTR)(LPCTSTR)strVarialbleFile);
+ {
+ auto events = m_hsmsPassive.getCollectionEvents();
+ std::vector<unsigned int> ceids;
+ ceids.reserve(events.size());
+ for (auto e : events) {
+ if (e != nullptr) ceids.push_back(e->getEventId());
+ }
+ m_master.setAllowedCeids(ceids);
+ }
strVarialbleFile.Format(_T("%s\\HsmsPassive.cache"), (LPTSTR)(LPCTSTR)m_strWorkDir);
m_hsmsPassive.loadCacheFromFile(strVarialbleFile);
--
Gitblit v1.9.3