This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: free() and implicit conversion to a function pointer (was: Use of initialized variable in strtod.c)




On 3/16/2017 3:39 AM, Corinna Vinschen wrote:
On Mar 15 18:48, Jeffrey Walton wrote:
But this in __call_atexit.c is definitely correct. It is
treating free() as a weak symbol and the only way to
silence Coverity is to add an annotation.

136      /* Don't dynamically free the atexit array if free is not
137         available.  */

CID 175323 (#1 of 1): Function address comparison (BAD_COMPARE)
func_conv: This implicit conversion to a function pointer is suspicious:
free.
        Did you intend to call free?
138      if (!free)
139        break;

Well, I have not encountered that one (yet). Since Coverity is
complaining about an implicit conversion, maybe the following will
help to avoid the implicit part (and sidestep the finding):

    if (free != NULL)
        break;

Or perhaps:

    if ((void*)free != NULL)
        break;

If that works to clear the finding, then it is one of those items I
write-off as "working and playing well with the tools".

Unfortunately you have to tell covreity that "free" is a var, not a function,
but since that's not generally true... marking as false positive.


Looks like the second option resolves the issue. No Coverity specific
markup at all. It seems better to be explicit since comparing a function
name to NULL directly is rather unusual.

--joel


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]