小编Ulu*_*aev的帖子

当字符串参数不是空终止时,`snprintf()` 可以越界读取吗?

我有以下一段代码,一位同事声称其中可能包含越界读取,我不同意。你能帮助解决这个争论并解释原因吗?

char *test_filename = malloc(Size + 1);
sprintf(test_filename, "");

if (Size > 0 && Data)
  snprintf(test_filename, Size + 1, "%s", Data);
Run Code Online (Sandbox Code Playgroud)

其中Data是式的非空终止字符串const uint8_t *DataSize是的大小Data,即,以字节为单位的数目Data,类型的size_t

它可能读取越界,因为格式字符串%s可能是 ?

c string printf

2
推荐指数
1
解决办法
92
查看次数

标签 统计

c ×1

printf ×1

string ×1