审计代码的时候如果一不留神就很可能忽略一些整数溢出漏洞,需要注意。
1.无符号数与有符号数比较
无符号数与有符号数比较时,会把有符号数转换成无符号类型,导致负数变成大整数
2.负数转换为正数
int abs(int input){
int out;
if(input<0){
out=-input;
}
else out=input;
return out;
}
比如用这种代码转换负数为正数,遇到0x80000000时会保持自身不变,因为-0x80000000==0x80000000