Wireshark mailing list archives

Re: Static analysis added to the buildbot


From: Guy Harris <guy () alum mit edu>
Date: Thu, 17 Feb 2011 00:07:04 -0800


On Feb 15, 2011, at 5:33 PM, Gerald Combs wrote:

The trunk buildbot now has two additional buildslaves: one that runs the
C/C++ code analyzer in Visual Studio 10 Premium and one that runs the
Clang Static Analyzer. They are scheduled to run once a day at 9:00 PM
PST (5:00 AM UTC) for the time being.

The following change:

http://anonsvn.wireshark.org/viewvc/viewvc.cgi?view=rev&revision=35973

User: guy
Date: 2011/02/16 08:35 PM

Log:
Use "XXX != NULL" rather than "XXX" to test for a null pointer; either
I'm missing something or the MSVC++ code analyzer doesn't realize that
in

      if (XXX)
              dereference XXX

will not dereference XXX if it's null - maybe "if (XXX != NULL)" will do
the trick (if so, the code analyzer is buggy, because "if (XXX !=
NULL)", "if (XXX != 0)", and "if (XXX)" mean the exact same thing if XXX
is a pointer-valued expression, really, truly, even if a null pointer
isn't represented as all zero bits or if it's wider than an int).

Clean up indentation.

Directory: /trunk/
 Changes    Path                  Action
 +31 -32    capture_ui_utils.c    Modified

which, other than the indentation change, was:

Index: capture_ui_utils.c
===================================================================
230d229
< 
241c240
<         if (if_info && if_info->description != NULL) {
---
    if (if_info != NULL && if_info->description != NULL) {

caused the output of the VC++ 10 code analyzer to go from

        ...

c:\buildbot\wireshark\trunk-vs-eca\vscodeanalysis\build\capture_ui_utils.c(241) : warning C6011: Dereferencing NULL 
pointer 'if_info': Lines: 226, 227, 228, 232, 233, 240, 241
c:\buildbot\wireshark\trunk-vs-eca\vscodeanalysis\build\capture_ui_utils.c(367) : warning C6328: 'const char' passed as 
parameter '1' when 'unsigned char' is required in call to 'isdigit'

        ...

to

        ...

c:\buildbot\wireshark\trunk-vs-eca\vscodeanalysis\build\capture_ui_utils.c(366) : warning C6328: 'const char' passed as 
parameter '1' when 'unsigned char' is required in call to 'isdigit'

        ...

the fact that "if (if_info && if_info->description != NULL)" and "if (if_info != NULL && if_info->description != NULL)" 
mean exactly the same thing according to ANSI X3.159-1989, "Programming Language - C."  (Language lawyery available 
upon request - it's been a while since I last did that, so I can't do it from memory any more. :-))

I'll try a few more fixes of that sort and, if they squelch the bogus complaints, I'll add an item about it to 
README.developer.
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe


Current thread: