欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MD5报pointer underrun的故障解决

程序员文章站 2024-02-29 17:22:28
...

调试网上MD5的C++经典代码时,打开BCBd的CodeGuard会报错pointer underrun,尤其是验证字符串过长时。打断点出现在 void MD5::update(const unsigned char input[], size_type length)  末尾一句:
 

/* Buffer remaining input */
memcpy(&_buffer[index], &input[i], length - i);

发现此时 length = i=8。如果 length-i=0,那么此句memcpy也无需执行!

所以不打开CodeGuard,运算结果也不会出错。

因此为了避免CodeGuard报错pointer underrun,附加一句判断:

/* Buffer remaining input */
if(length - i !=0) 
memcpy(&_buffer[index], &input[i], length - i);

 

相关标签: pointer underrun

上一篇: python基础1

下一篇: