【三方库】ohos_coap v2.0.22 鸿蒙平台稳定性与质量提升
·
📢 【三方库】ohos_coap v2.0.22 鸿蒙平台稳定性与质量提升
ohos_coap v2.0.22 已发布。本次升级聚焦该库稳定性提升,修复 CVE-2026-29013 涉及的 PDU 缩容越界、空指针解引用及断言崩溃问题,兼容升级,开发者无需修改现有代码即可享受本次改进。推荐所有该库用户升级至本版本。
版本概览
| 类型 | 内容 |
|---|---|
| 稳定性 | 修复 CVE-2026-29013(libcoap PDU 缩容越界、缓存条目空指针解引用、option 插入断言崩溃) |
稳定性提升
修复 CVE-2026-29013
问题:上游 libcoap 存在 sanitizer 报告的若干内存安全问题,根因有三:
coap_pdu_resize()中pdu->alloc_size = new_size赋值位于if (new_size > pdu->alloc_size)分支之外,导致当传入的new_size小于当前alloc_size(缩容场景)时,alloc_size仍被错误更新为更小值,使后续操作可越过已分配缓冲区访问,造成 options 数据混乱。coap_insert_option()在pdu->max_opt与实际最大 option 不一致时(可由上述缩容问题触发)直接调用assert(option != NULL),在 Release 构建下或异常输入下引发崩溃。coap_new_cache_entry_lkd()以COAP_CACHE_RECORD_PDU记录缓存时,无条件执行entry->pdu->data = entry->pdu->token + (pdu->data - pdu->token),未校验pdu->data是否为空,当 PDU 无 payload 时产生空指针解引用。
修复(通过新增 libcoap/src/main/cpp/thirdModule/0001-CVE-2026-29013.patch 并在 modify.sh 中应用):
src/coap_pdu.ccoap_pdu_resize():将pdu->alloc_size = new_size;移入if (new_size > pdu->alloc_size)分支内部,仅在扩容时更新,拒绝缩容,消除越界根因。src/coap_pdu.ccoap_insert_option():以if (option == NULL) { coap_log_warn("coap_insert_option: Broken max_opt\n"); return 0; }替换原assert(option != NULL),将崩溃转为安全告警并优雅返回。src/coap_cache.ccoap_new_cache_entry_lkd():在计算data指针偏移前增加if (pdu->data)判空,避免空指针解引用。
兼容性说明
- 无 Breaking Changes,API 接口保持不变。
- 本次变更以缺陷修复为主,现有代码无需修改。
- 从 v2.0.21 起升级至 v2.0.22 均为兼容性升级。
升级方式
- 鸿蒙原生:
oh-package.json5→"@ohos/coap": "^2.0.22",执行ohpm install。
相关链接
- 文档:https://gitcode.com/CPF-ApplicationTPC/ohos_coap/blob/master/README.md
- CHANGELOG:https://gitcode.com/CPF-ApplicationTPC/ohos_coap/blob/master/CHANGELOG.md
- 反馈:https://gitcode.com/CPF-ApplicationTPC/ohos_coap/issues
更多推荐




所有评论(0)