【问题标题】:C program received "killed 9" on Apple Silicon macOS, but fine on IntelC 程序在 Apple Silicon macOS 上收到“killed 9”,但在 Intel 上很好
【发布时间】:2020-12-04 13:50:13
【问题描述】:

我有一个 NIST-800-90Ar1 CTR-DRBG 随机位生成器的 C 实现,它在 Intel Mac 上运行良好,但是当我在 Apple Silicon Mac 上测试它时,它收到了 SIGKILL 信号。

我已经制定了解决方案,我只是分享信息,如果它不能解决您的问题,请提出新的问题。

【问题讨论】:

  • 您实际上并没有在这里分享太多信息...

标签: c macos pointers sigkill apple-silicon


【解决方案1】:

原因是我在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 会谈中介绍。

【讨论】:

  • “uintptr_t 上的指针运算”是什么意思?它是一个整数类型。也许您可以发布一个会给出错误的代码示例?
猜你喜欢
  • 2021-02-13
  • 2022-08-11
  • 2021-12-14
  • 2021-03-29
  • 2021-05-05
  • 1970-01-01
  • 2021-09-09
  • 2021-05-15
  • 1970-01-01
相关资源
最近更新 更多