暴走的指压师

为何中年妇女对14岁正太不理不睬?28岁大妈是如何保持14岁身材与脸颊?三无蓝毛究竟身在何处?为何少年抛弃妹子去寻找基友的菊花,大妈抛弃正太去和眼镜妹百合? 一切的一切,请看《Q ヱヴァンゲリヲン新劇場版:Q 》
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

梦断代码2-隐性泄漏-内存溢出-越界改写

Posted on 2013-07-07 23:44  晓彻  阅读(498)  评论(0编辑  收藏  举报

我擦,我要上图,泄漏内存越界改写的程序员们都该烧死FFF

我已经死过多遍了。上图。

 

在协议栈内核处理进程中,有一个如影随形的trace模块,数据包进来以后会被trace记录信息,以供给各层协议进行只读操作。某天佛山网吧接入路由出现四五天定时断线死机,log模块也没记录那么多内容,而且四五天才会死机一次,所以复现也挺麻烦。组长找人跟进提测,N天之后找到我负责的ppp模块,在ppp模块有一个比较简单的用于回调的处理进程,用于专门处理auth、trace任务,任务栈空间4k。某日G君跟到ppp这里发现一层的ppp work处理函数赫然躺着char buff[4096];的数组这种不经内存申请检测的代码。我擦。。。。烧死FFF

 

建议:vxWorks属于平坦的整块内存,不像linux分层保护内存机制,所以一般在任务处理时需要对内存大小进行严格规划;另外一种方法是申请内存池,也能很好的规划好使用的内存空间而防止越界问题;设计hash时,空间以经验的4倍为宜可以在一定程度上取得空间大小和冲突避免的平衡。