我在iOS应用程序中使用md5.c文件。 http://opensource.apple.com/source/cvs/cvs-33/cvs/lib/md5.c?txt使用文件md5.c编译Xcode时出现警告
当我编译,我得到的错误: 参数以“内置 _memset_chk”呼叫是相同的表达作为目的“的sizeof”;你的意思是解除引用吗?
这就是: memset(ctx,0,sizeof(ctx));/*如果它敏感*/
需要改变什么?
琳达
我在iOS应用程序中使用md5.c文件。 http://opensource.apple.com/source/cvs/cvs-33/cvs/lib/md5.c?txt使用文件md5.c编译Xcode时出现警告
当我编译,我得到的错误: 参数以“内置 _memset_chk”呼叫是相同的表达作为目的“的sizeof”;你的意思是解除引用吗?
这就是: memset(ctx,0,sizeof(ctx));/*如果它敏感*/
需要改变什么?
琳达
我想,如果你想改变该行的代码编译器问:
memset(ctx, 0, sizeof(*ctx));
您可以摆脱警告:
size_t len = sizeof(ctx);
memset(ctx, 0, len);
但是,这只会零前4个字节的结构。正如@ dans3itz所说,它可能是一个代码错误和sizeof(* ctx)可能是什么意思。因为正如评论所说这是为了“保护”,所以对于该功能的操作并不是真的必要。有趣的是,这些代码一直没有人在这些年中挑选出来。
我不认为代码是正确的; ctx是一个指向结构体的指针,写入的代码会清除结构体中第一个指针大小的字节,这很奇怪。 – 2012-08-08 20:42:56
我改变了评论。它发生在我发布后,我不正确地想出我的回应(如已经注意到:-)) – 2012-08-08 21:03:24
这绝对有效。 – Linda 2012-08-09 15:39:41