修改获取全部表盘id接口防止越界 1219/3 1219/head
authorhcj <1224667075@qq.com>
Sun, 20 Oct 2024 03:26:08 +0000 (11:26 +0800)
committerhcj <1224667075@qq.com>
Sun, 20 Oct 2024 03:26:08 +0000 (11:26 +0800)
code/sdk/application/wearable/fd230app/nativeui/set_dial/include/SetDialModel.h
code/sdk/application/wearable/fd230app/nativeui/set_dial/src/SetDialModel.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.h
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c

index e9d7020..50119e2 100644 (file)
@@ -53,7 +53,7 @@ namespace OHOS
         void UpdateDialSetting(uint16_t ID);
         uint16_t GetDialIdFromName(const std::string &dialName);
         void PrintRegisteredDials(const std::unordered_map<uint16_t, std::string> &dials);
-        int GetAllDialIDs(char *allidStr);
+        int GetAllDialIDs(char *allidStr,uint16_t MAX_LEN);
 
 
         /*表盘map文件*/
index d304da6..a6cc799 100644 (file)
@@ -184,7 +184,7 @@ uint16_t SetDialModel::GetCurrentDialID() {
   return id;
 }
 /* 获取所有表盘Id 每个表盘Id 2个字节 拼接为字符串 */
-int SetDialModel::GetAllDialIDs(char *allidStr) {
+int SetDialModel::GetAllDialIDs(char *allidStr,uint16_t MAX_LEN) {
   std::string allIDs;
   int length = 0;
   for (const auto &entry : registeredDials) {
@@ -192,6 +192,7 @@ int SetDialModel::GetAllDialIDs(char *allidStr) {
     if (id <= 5) {
       id--;
     }
+    if(length<MAX_LEN)
     memcpy_s(allidStr + length, 512, &id, 2);
     length += 2;
   }
@@ -451,7 +452,7 @@ void SetDialModel::LoadAllDial() {
 
   // 表盘Id以及表盘map打印
   char dialId[128];
-  GetAllDialIDs(dialId);
+  GetAllDialIDs(dialId,128);
   PrintRegisteredDials(registeredDials);
 }
 /*加载离线表盘*/
index 3b6f5a5..348a391 100644 (file)
@@ -992,10 +992,10 @@ bool ble_delete_dial(uint16_t id)
 #endif
 }
 
-int get_all_dial_id( char * buf)
+int get_all_dial_id( char * buf,uint16_t MAX_LEN)
 {
 #ifdef FD230
-    return OHOS::SetDialModel::GetInstance().GetAllDialIDs(buf);
+    return OHOS::SetDialModel::GetInstance().GetAllDialIDs(buf,MAX_LEN);
 #else
 return 0;
 #endif
index 20f5872..f20fafe 100644 (file)
@@ -239,7 +239,7 @@ int ble_get_dial_num( void);
 
 bool ble_delete_dial(uint16_t id);
 
-int get_all_dial_id( char * buf);
+int get_all_dial_id( char * buf,uint16_t MAX_LEN);
 
 void install_Register_dial( char * name,uint16_t id);
 
index ac43323..0e3f498 100644 (file)
@@ -5141,7 +5141,7 @@ static void GetAllDialUidCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *to
         char *dail_uid_buf=(char *)ym_malloc(data_size);\r
         dail_uid_buf[0]=(uint8_t)dial_num;\r
 \r
-        if(dial_num *2 !=get_all_dial_id(dail_uid_buf+1))\r
+        if(dial_num *2 !=get_all_dial_id(dail_uid_buf+1,dial_num*2))\r
         {\r
               WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GetAllDialUidCmd  dial_num %d err\r\n",dial_num);\r
         }\r