2020年的第一篇博文, 关于一个strstr的bug
背景
今天下游的小姐姐来找我们说他们的一家客户本来没有中债估值的权限,但是我们还是给客户发了估值,导致年结账目错误。
查问题的过程
- 一开始因为有事,没有仔细去看也没有仔细去查,只是绝望的发现,因为“案发”较久(4个月),所有的日志都没有了。
- 后来, 我们的下游找了产品,从产品那了解到说我们的处理逻辑存在问题
- 在boss的指点下,完成了问题的复现
- 仔细阅读代码, 找到了代码判断权限的漏洞
反思
有问题还是要多沟通, 如果自己没有时间去阅读的代码的话,就多从别人那边了解一些背景信息。在系统复杂的情况下,还是要首先基于现有的场景和现象,做出方向性判断,这样不至于陷入到代码的汪洋大海中。
附录
错误(不严谨)判断权限的地方: strstr对于NULL的处理(不同平台表现不同, solaris上根据man page, 查找null返回被查找串本身, linux(ubuntu 18)则直接core dumped)
写代码还是要谨慎,不要给后辈留bug(哈哈, 我的前辈看不到)