【发布时间】:2015-10-04 08:28:25
【问题描述】:
假设我有一个程序可以解密文件并将解密的内容存储在堆上。我想保护这些信息免受在同一系统上运行的其他(非根)进程的影响,所以在我调用free() 释放堆分配之前,我使用memset() 覆盖数据并使其不可用下一个使用相同物理内存的进程。 (I understand this isn't a concern on some systems,但宁愿在安全方面犯错。)
但是,我不确定在程序无法正常终止的情况下该怎么办,无论是通过强制终止(SIGINT、SIGTERM 等)还是由于错误条件(@987654326 @、SIGBUS 等)。我应该在退出之前捕获尽可能多的信号以清除堆,还是有更有序的做事方式?
【问题讨论】: