如果我分配一些内存使用malloc()
有没有办法将它标记为只读。那么如果有人尝试写入 memcpy() 会失败吗?
这与错误的 api 设计有关,在这种设计中,用户错误地使用了一个方法返回的 const 指针,该方法 GetValue()
是大内存结构的一部分。由于我们希望避免复制大块内存,因此我们在具有特定格式的结构化内存中返回实时指针。现在的问题是,一些用户发现黑客可以通过直接写入该内存并避免 SetValue() 调用来进行分配并正确处理我们开发的内存二进制格式。尽管有时会发生黑客攻击,但有时会由于对已被用户覆盖的控制标志的错误解释而导致内存访问冲突。
教育用户是一项任务,但现在让我们说我们希望那里的代码失败。
我只是想知道我们是否可以简单地防止这种情况。
打个比方,假设有人从 sqlite 语句中得到一个 blob 列,然后写回它。虽然在 sqlite 的情况下它没有意义,但在我们的情况下这有点发生。