0

我在 iOS 应用程序中使用 md5.c 文件。 http://opensource.apple.com/source/cvs/cvs-33/cvs/lib/md5.c?txt

当我编译时,我得到错误:' builtin _memset_chk'调用中'sizeof'的参数与目标的表达式相同;你的意思是取消引用它吗?

这在以下行中: memset(ctx, 0, sizeof(ctx)); /* 如果它是敏感的 */

需要改变什么?

琳达

4

2 回答 2

3

我认为编译器会询问您是否要将那行代码更改为:

memset(ctx, 0, sizeof(*ctx));
于 2012-08-08T20:39:02.583 回答
0

您可以通过以下方式摆脱警告:

size_t len = sizeof(ctx);
memset(ctx, 0, len);

但这只会将结构的前 4 个字节归零。正如@dans3itz 所说,它可能是代码错误,而 sizeof(*ctx) 可能就是这个意思。由于正如评论所说,这是为了“保护”,因此该功能的运行并不是真正必要的。有趣的是,这段代码已经发布了这么多年,没有人发现它。

于 2012-08-08T20:37:00.083 回答