7行代码让B站解体3小时,竟因“一个诡计多端的0”
不关递归的事,用循环一样可能呈现死循环导致CPU 100%,关键在于输入校验,基于外部输入不可靠的思维去编程,极端场景、上层BUG或者黑客攻击,都会引发这种不可靠。 |
|
|
|
|
这个问题是这几行的问题吗。明显是调用那边有问题。为什么传入非法数据。凭什么要在内核方法里面做容错。这个方法在业务层最多就是没有做临界退出机制。大部分判断应当做到传入时自己判断参数合法性。 |
|
|
|
|
递归逻辑有问题,无法保证退出条件一定满足。 需要参与一个强迫退出条件,保证退出条件一定会满足。倒计数器是一个比较简单的方法。 |
|
|
|
|
也就是说,写过c系列语言的,就不会犯这个错误。。。由于语言特性天然对这个敏感[黑线][黑线][黑线] |
|
|
|
|
程序员的锅,既然晓得这个是弱类型就要去考虑所有进来的参数类型的情况而不只仅考虑数字,而且这是个递归函数啊有敏感起来才行 |
|
|
|
|