处理第三方DLL的缓冲区溢出



在我的项目中,我使用了不会更新的较旧的第三方DLL。它用于解压缩数据。它将数据解压缩并将结果放入传递给它的缓冲区中。

问题在于,如果将结果数据放入没有足够的空间的缓冲区中,则可能发生缓冲区溢出。此缓冲区大小是将INT32值固定在压缩数据上的INT32值。如果那里有不正确的缓冲区大小,则会发生缓冲区溢出,从而导致堆损坏。

您如何从中恢复过来?如果发生缓冲区溢出,我可以检测到,但只有在调用DLL的解压缩函数之后。

感谢您的时间!

唯一真正的解决方案是使您的缓冲区大于任何可能的结果大小。如果您不这样做,则通过对功能的描述,一旦调用该功能,堆可能已经发生。

最新更新