https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108995
Bug ID: 108995
Summary: Missed signed integer overflow checks in UBsan?
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: sanitizer
Assignee: unassigned at gcc dot gnu.org
Reporter: qrzhang at gatech dot edu
CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
jakub at gcc dot gnu.org, kcc at gcc dot gnu.org, marxin at
gcc dot gnu.org
Target Milestone: ---
$ cat abc.c
int printf(const char *, ...);
int a;
const int b = 44514;
int *c = &a;
void main(void) {
*c = 65526 * b / 6;
printf("%d\n", a);
}
Ubsan did not emit any message. However, the outputs are different.
$ gcc-trunk -O3 -fsanitize=undefined abc.c ; ./a.out
-229690488
$ gcc-trunk -fsanitize=undefined abc.c ; ./a.out
486137394