[Bug sanitizer/107619] New: False positive of -fsanitize=null
shaohua.li at inf dot ethz.ch
gcc-bugzilla@gcc.gnu.org
Thu Nov 10 16:12:42 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107619
Bug ID: 107619
Summary: False positive of -fsanitize=null
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: sanitizer
Assignee: unassigned at gcc dot gnu.org
Reporter: shaohua.li at inf dot ethz.ch
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: ---
`gcc-tk -O0 -fsanitize=null` reports a null pointer dereference in `c[0] = *a`,
which I think should not although there is a buffer-overflow in the memcpy.
Interestingly, if you uncomment `int* e[1]`, no error will be warned and the
program exits normally.
Compiler explorer: https://godbolt.org/z/bKhnKhe7d
% gcc-tk -O0 -fsanitize=null a.c && ./a.out
a.c:11:12: runtime error: load of null pointer of type 'int'
Segmentation fault
%
% cat a.c
int main() {
int* a;
// int* e[1];
int b[1];
int c[3];
a = b;
for (int i = 0; i < 3; i++) {
c[i] = 0;
}
__builtin_memcpy(a, c, 3 * sizeof(int));
c[0] = *a;
return 0;
}
%
More information about the Gcc-bugs
mailing list