我在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