在gdb中查找导致“地址超出范围”的函数

卡迪尔·埃德姆·德米尔(Kadir Erdem Demir)

我的项目中有一个严重的错误。当我使用gdb打开.core时,它显示出类似的信息(为了便于阅读,我没有放置所有的gdb输出):

这是非常非常可疑的代码的新书面部分::

0x00000000004579fe in http_chunk_count_loop 
 (f=0x82e68dbf0, pl=0x817606e8a Address 0x817606e8a out of bounds)

这是代码的非常成熟的部分,可以正常工作很长时间:

0x000000000045c8a5 in packet_handler_http 
 (f=0x82e68dbf0, pl=0x817606e8a Address 0x817606e8a out of bounds)

好的,令我烦恼的是pl=0x817606e8a Address 0x817606e8a out of bounds,gdb显示它在到达新的书面代码之前已经超出范围。这使我想到由调用函数引起的问题packet_handler_http

但是packet_handler_http很成熟并且可以长时间工作没有问题。这使我误解了gdb输出。

packet_handler_http我猜是问题所在,但是因为这已经是可以工作的代码,所以我很困惑,我猜对了还是错过了什么?

卡迪尔·埃德姆·德米尔(Kadir Erdem Demir)

谢谢你们的贡献,甚至gdb都说相反,事实证明指针很好。

新代码中有一部分导致超出范围的问题。

有一行像:::(goodpointer + offset),这个偏移是http块大小,我从网络(数据嗅探)中获取它。并且有一种攻击认为此偏移量非常大,从而导致整数溢出。这导致了超出范围的问题。

我的结论是:永远不要从网络中获取参数,并且gdb可能不会始终将参数正确指向coredump,因为在挤压的时刻,东西可能会变得混乱。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

数学函数中的索引超出范围

超出范围的Javascript函数

从“查找”结果中获取“下标超出范围”错误

MIPS程序,错误地址超出范围

Azure Functions IP地址超出范围

def函数中的空列表(列表索引超出范围)

C#函数中的属性超出范围

对象超出范围并调用了析构函数,导致该对象地址后的指针在每个属性上都具有不可读的内存

数组索引超出范围并导致错误?

查找索引超出范围异常

GoLang:在函数中分配Slices Slices导致索引超出范围

在另一个工作簿中查找单元格地址,其值为:“运行时错误'9'下标超出范围”

searchList函数索引超出范围错误

列表索引超出范围Python函数

如何修复“.pop() 函数超出范围”

矩阵构造函数索引超出范围

函数使索引超出范围异常

如何使用GDB在C程序中检测“超出范围的错误”?

SwiftUI:从ForEach中删除项目会导致索引超出范围

QAbstractListModel.match()导致ASSERT在QList <T> :: operator []中失败:“索引超出范围”

WebGL:glDrawElements导致“ glDrawElements:尝试访问属性0中超出范围的顶点”

float64 中的字符串转换导致索引超出范围?

Python IndexError:在vcf中查找SNP时列出索引超出范围

IndexError:与目标相比,尝试在列表中查找整数对的总和时列出索引超出范围

hcf在Python中查找代码时使用的嵌套循环返回IndexError:index超出范围

代码中的下标超出范围错误

索引opengl中的超出范围的索引

在Matlab中抛出“超出范围”

VBA中的绘图箭头超出范围