专栏名称: Linux爱好者
伯乐在线旗下账号,「Linux爱好者」专注分享 Linux/Unix 相关内容,包括:工具资源、使用技巧、课程书籍等。
今天看啥  ›  专栏  ›  Linux爱好者

一个埋藏9年的底层bug发现历程

Linux爱好者  · 公众号  · linux  · 2024-08-30 11:50

主要观点总结

本文记录了一个关于图片存储和加密的问题排查和解决过程。作者所在的项目组遇到了用户在拍摄照片时,会出现照片损坏的问题。经过一系列排查,最终确定是解密算法处理不当导致的。

关键观点总结

关键观点1: 问题现象

用户在拍摄照片时,会出现照片损坏的情况,此问题在线上环境出现了有一段时间了。现象包括不同任务类型都有此问题、1/200的概率稳定出现图片损坏、仅webp格式会出现此问题等。

关键观点2: 排查过程

先熟悉了项目代码,然后制定了排查顺序,包括压制照片时出错、调用AES加密算法时出错、图片格式问题等。排查中发现解密操作存在问题,解密算法的不当处理导致了图片损坏。

关键观点3: 错误原因

解密算法中对空字符串的判断导致问题。在解密二进制图片时,由于图片中也存在'0x00'字节,导致误判为空字符串,从而终止解密流程。

关键观点4: 解决方案

去掉了对空字符串的校验,提前进行校验,避免误判。同时对代码进行了整理,发现了另一个相同问题的处理方法,一并解决了。

关键观点5: 总结

一个问题往往是由多个小的不规范或错误累积而成的。代码写得不规范,留有安全隐患,所有风险问题汇总到一起的时候,就会造成最后的“灾难”。需要提早进行入参校验,有风险意识,解决一个错误时,要看一下有没有相似的错误,可以一并修改。


文章预览

导读 一个问题往往是由多个小的不规范或错误累积而成的。本文记录了作者发现问题、现象分析、排查过程、最后解决问题的全历程。 项目背景 我所在的项目组主要负责对店铺招牌拍摄,我负责App客户端的开发工作。此项目从立项之初到现在已经有很长的历史了。 现在出现了一个问题: 用户在拍摄照片时,会出现照片损坏的情况 ,这个问题在线上环境出现了有一段时间了,再加上自己接手时,此问题已经出现了,就没有深入排查过产生原因。暂时的解决策略是让用户手动删除损坏的照片,上传图片时,服务端也会进行一次文件损坏检测。 我们会下发各种拍摄任务类型,有的任务只需要拍摄几张照片即可,有的任务需要拍摄上千张图片,此问题就会更容易暴露。在同事的建议下,决定要找到问题的根源。 现象 之前只是知道有此问题,没有仔细 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览