现在几乎每个人都听说过HeartBleed漏洞。
如果您检查代码是问题的根源,您可以找到以下结构:
struct {
HeartbeatMessageType type;
uint16 payload_length;
opaque payload[HeartbeatMessage.payload_length];
opaque padding[padding_length];
} HeartbeatMessage;
自从上次我在C上主动编程以来已经有一段时间了,但我仍然用它来编写小程序或片段。
重点是我从未使用过opaque
,我想知道opaque
代表的是什么。
答案 0 :(得分:3)
" 不透明"当您需要填补空白时,它通常用于商业和内部/专有API。在C / C ++声明中。
由于您不知道该类型是否为指针(在这种情况下您将知道其大小)或整个结构/类,因此您无法推断出任何内容,因此代码可用作通用关于如何布置记忆的想法。
他们隐藏您的信息。这是一种常用的技术,特别是用于安全措施的时候,就像上面发布的代码一样。