sizeof(*foo) doesn't actually dereference foo, and so shouldn't generate a NULL pointer dereference warning. However, cppcheck will do so under at least some circumstances. For example:
sizeof(*foo)
#include <stdio.h> struct foo { int a; char b; }; static void func(struct foo *foo) { size_t len = sizeof(*foo); printf("%zd\n", len); } void func2(void) { func(NULL); }
$ cppcheck ~/tmp/foo.c Checking /home/dwg/tmp/foo.c ... /home/dwg/tmp/foo.c:10:23: error: Null pointer dereference: foo [ctunullpointer] size_t len = sizeof(*foo); ^ /home/dwg/tmp/foo.c:16:6: note: Calling function func, 1st argument is null func(NULL); ^ /home/dwg/tmp/foo.c:10:23: note: Dereferencing argument foo that is null size_t len = sizeof(*foo); ^
Thanks for reporting, fixed by https://github.com/danmar/cppcheck/pull/4471
Wow, that was fast. Thanks!
Log in to post a comment.
sizeof(*foo)
doesn't actually dereference foo, and so shouldn't generate a NULL pointer dereference warning. However, cppcheck will do so under at least some circumstances. For example:Thanks for reporting, fixed by https://github.com/danmar/cppcheck/pull/4471
Wow, that was fast. Thanks!