[net][at] Reject overlong numeric hostnames - #11782
Conversation
Numeric hostnames were copied into a fixed stack buffer without a length bound. Cache the length, reject values that cannot fit, and terminate the copy explicitly. Fixes RT-Thread#11332 Assisted-by: OpenAI Codex:GPT-5
|
👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread! 为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。 🛠 操作步骤 | Steps
完成后,提交将自动更新至 如有问题欢迎联系我们,再次感谢您的贡献!💐 |
📌 Code Review Assignment🏷️ Tag: componentsReviewers: @Maihuanyi Changed Files (Click to expand)
🏷️ Tag: components_net_atReviewers: @Ryan-CW-Code @lizhen9880 Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2026-09-07 12:13 CST)
📝 Review Instructions
|
|
拉取/合并请求描述:(PR description)
为什么提交这份PR (why to submit this PR)
_gethostbyname_by_device()copied numeric-looking hostnames into a 16-bytestack buffer with
strncpy(ipstr, name, strlen(name)). A 16-byte input removedthe terminator, while a 17-byte or longer input wrote beyond the buffer before
inet_aton()could reject it.This path is reachable through the AT-backed resolver APIs, including
getaddrinfo()andgethostbyname*().你的解决方案是什么 (what is your solution)
Cache the hostname length once, classify characters with the required unsigned
ctypeinput, and reject numeric-looking strings that cannot fit inipstr.For accepted strings, copy the validated length and add the terminator
explicitly. This keeps the existing AT/domain resolution behavior unchanged and
removes the unbounded stack write.
Fixes #11332
请提供验证的bsp和config (provide the config and bsp)
bsp/simulatorheaders and MSVC; no physical hardware required.RT_USING_AT,AT_USING_SOCKET,RT_USING_SAL, andRT_USING_NETDEV.Testing
/W4 /RTC1 /GSboundary harness using the numeric-host branch:15 bytes accepted, 16 and 17 bytes rejected.
components/net/at/at_socket/at_socket.cwith MSVC/W4; no warnings in the changed lines./analyze; no diagnostics in the changed code.clang-format --dry-run --Werror -style=file -lines=1409:1457.git diff --check.AI assistance: OpenAI Codex:GPT-5 assisted with investigation, implementation,
and local verification. The commit contains the matching
Assisted-bytrailer.当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up