我有以下一段代码,一位同事声称其中可能包含越界读取,我不同意。你能帮助解决这个争论并解释原因吗?
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 *Data和Size是的大小Data,即,以字节为单位的数目Data,类型的size_t。
它可能读取越界,因为格式字符串%s可能是 ?