[cfe-dev] [cfe-users] Questionable dereference of null pointer warning
Anna Zaks
ganna at apple.com
Mon Feb 4 13:39:08 PST 2013
On Feb 4, 2013, at 11:31 AM, "Morrell, Michael" <michael.morrell at intel.com> wrote:
> I haven't received any response yet, so I figured I'd try cfe-dev.
>
> Michael
>
> Begin forwarded message:
>
> From: "Morrell, Michael" <michael.morrell at intel.com<mailto:michael.morrell at intel.com>>
> Subject: [cfe-users] Questionable dereference of null pointer warning
> Date: January 31, 2013 11:09:38 AM PST
> To: "cfe-users at cs.uiuc.edu<mailto:cfe-users at cs.uiuc.edu>" <cfe-users at cs.uiuc.edu<mailto:cfe-users at cs.uiuc.edu>>
>
> I'm getting a "dereference of null pointer" warning from the Clang static analyzer (checker-270 on MacOS) that I don't understand. A simplified example is:
>
> =========================
> void set_x1(int *&);
> void set_x2(void *&);
>
> int foo(void)
> {
> int *x = 0, *y = 0;
>
> set_x1(x);
> set_x2((void *&)y);
> return *x + *y;
> }
> =========================
>
> When I run "scan-build c++ -c" on this file, it complains about the dereference of y, but not x. Should there be a difference between these two cases?
This is a false positive. There should be no bug reported. Please, file a bug report.
>
> On a related note, it appears that the analyzer assumes that a function like set_x1 will always set the argument to a non-NULL value (presumably unless it can see the source and know otherwise). Is that the best assumption and are such assumptions made by the analyzer documented anywhere?
>
That is correct. The analyzer does assume that the value of the pointer can be anything after a call to 'set_x2', unless it can see inside 'set_x2'. The analyzer currently only preforms inter-procedural analyzes within a single translation unit (source file + headers). The idea is to be conservative and report as few false positives as possible. We do not have a document describing what the reasoning is in each case.
> Thanks,
>
> Michael
> _______________________________________________
> cfe-users mailing list
> cfe-users at cs.uiuc.edu<mailto:cfe-users at cs.uiuc.edu>
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-users
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
More information about the cfe-dev
mailing list