优化NMEA的越界风险
authorCaisking <Casiking@zhihuishixun.com>
Fri, 26 Dec 2025 13:18:58 +0000 (21:18 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Fri, 26 Dec 2025 13:18:58 +0000 (21:18 +0800)
code/sdk/zhihui/services/gnss/src/NMEA0183.c

index 46bd78f..d45ad13 100644 (file)
@@ -144,6 +144,11 @@ static unsigned char nmea_term_complete(gps_nmea_t* pnmea, gps_data_t* pdata)
     // handle the last term in a message\r
     if (pnmea->is_checksum_term)\r
        {\r
+        // 检查校验和字段长度,防止数组越界访问\r
+        if (pnmea->term_offset < 2) {\r
+            // 校验和字段长度不足,返回0表示解析失败\r
+            return 0;\r
+        }\r
         unsigned char checksum = 16 * from_hex(pnmea->term[0]) + from_hex(pnmea->term[1]);\r
         \r
         /* 检验信息段是否完整无错,如果校验通过,则将解析得到的数据保存,并提供给用户调用*/\r