代码拉取完成,页面将自动刷新
【模块名_概率】简要描述:
SplitString函数存在栈溢出风险。
【环境信息】:
sunxi d1 nezha riscv openharmony
【预置条件】:
【测试步骤】:
【预期结果】:
【实际结果】:
【恢复手段】:
【出现概率】:问题出现次数/实际测试次数
必现
【定位信息】:
int SplitString(char *srcPtr, const char *del, char **dstPtr, int maxNum)
{
INIT_CHECK_RETURN_VALUE(srcPtr != NULL && dstPtr != NULL && del != NULL, -1);
char *buf = NULL;
dstPtr[0] = strtok_r(srcPtr, del, &buf);
int counter = 0;
while (dstPtr[counter] != NULL && (counter < maxNum)) {
counter++;
dstPtr[counter] = strtok_r(NULL, del, &buf);
}
dstPtr[counter] = NULL;
return counter;
}
这里dstPtr的个数最大为maxNum,其数组下标最多就只能是[maxNum-1]。
但是执行while循环后,counter变为maxNum,这里就相当于对dstPtr[maxNum]进行赋值,栈越界了。
确实会栈越界的风险,我们马上改,谢谢你的反馈
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
登录 后才可以发表评论