095 不断崩溃的主控电脑(4/5)
还帮他把机器码逆成了c。
//用来接受扩展缓冲区的内存
unsignedchar*ext_buf=null;
//判断受到的通知是否有扩展属性
if(notify-〉type|nt_type_ext)
{
//如果有,复制扩展缓冲区
memcpy(ext_buf,
notify-〉ext_buf,
notify-〉ext_buf_len);
}
这是一个超级明显的bug。
因为ext_buf的内存根本没分配,所以如果收到类型里带有扩展标记的扩展型通知,就会往空指针里复制数据,必崩溃无疑。
但为什么船长说他开船以来还从来没有坏过呢?
看起来原因很简单,因为这条船从来就没有收到过这种扩展类型的通知。
只要收到的通知里类型都不带nt_type_ext标记就永远不会崩溃。
但现在这四台主控电脑都启动不了了。其实它们并非是真的起不来。
而是它们只要一启动,就会很快收到一条带有这种罕见属性的通知,然后又崩溃而自动重启了。
本章未完,点击下一页继续阅读。