簡體   English   中英

C 程序在 Apple Silicon macOS 上收到“killed 9”,但在 Intel 上很好

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM