(资料图片仅供参考)
4月27日消息,微信扫二维码闪退的问题得到解决,安卓用户扫描下方二维码会发生闪退,多次闪退之后,微信便会进入“安全模式”。
在4月27日新版本的微信更新中,这一问题已经得到解决。
来自开源社区OpenCV的分析文章,解读了扫码闪退的原理。
微信扫码引擎开源在OpenCV社区,两位网友Konan和GZTimeWalker来到OpenCV源码仓库中找出了导致微信闪退的Bug,同时也给OpenCV提交了一个补丁进行修复。
问题发生在DecodedBitStreamParser::decodeByteSegment中。如下面的代码所示,如果传入参数bits_是内容为空但长度非零的ByteSegment,此时bits.available()返回0,随后count被更新为0,但nBytes没有更新仍保持为非0。这会造成后面的append函数访问空指针readBytes读取nBytes数据,导致程序终止。