[英]C program received “killed 9” on Apple Silicon macOS, but fine on Intel
我有一個 NIST-800-90Ar1 CTR-DRBG 隨機位發生器的 C 實現,它在 Intel Mac 上運行良好,但是當我在 Apple Silicon Mac 上測試它時,它收到了 SIGKILL 信號。
我已經制定了解決方案,我只是分享信息,如果它不能解決您的問題,請詢問新的。
原因是我在uintptr_t
上進行指針運算,導致指針身份驗證失敗。
例如,我的代碼中存在以下代碼片段:
uint8_t *seed = (void *)((uintptr_t)ctx + ctx->seed_offset);
uintptr_t
上的算術會破壞指針上的身份驗證信息。 應該是:
uint8_t *seed = ((uint8_t *)ctx + ctx->seed_offset);
指針身份驗證是 ARM 處理器中的一項安全功能,這是在 WWDC 2020 會談中介紹的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.