On Feb 23, 2012, at 5:28 AM, Jordy Rose wrote:

> 
> On Feb 23, 2012, at 0:36, Anna Zaks wrote:
> 
>> 
>> On Feb 18, 2012, at 5:34 AM, Jordy Rose wrote:
>> 
> 
>>>> +// Rely on the CString checker evaluation of the strcpy API to convey 
>>>> that the result of strcpy is equal to p.
>>>> +void symbolLostWithStrcpy(char *s) {
>>>> +  char *p = malloc(12);
>>>> +  p = strcpy(p, s);
>>>> +  free(p);
>>>> +}
> 
> Yes, I see that there was a false positive here. But it seems that 
> MallocChecker directly depends on the evaluation of /every/ alias-returning 
> function. The string functions happen to be fairly ubiquitous and present in 
> the same library, so I can see that it might be worth special-casing them, 
> but I personally don't consider understanding strcpy to be an /inherent/ 
> feature of MallocChecker. If the analyzer in general doesn't know about 
> string functions, you shouldn't be surprised when MallocChecker doesn't know 
> about the string functions either.

I don't fully get your point here.. I think implementing domain specific 
knowledge in the checkers rather then the analyzer core is the right solution. 
Reasoning about non-malloc related functions makes the Malloc checker more 
powerful. -> Setting the dependency between the two is the way to solve the 
problem.

Ideally, CStringBasic should only include the function evaluation logic (and 
skip the CStringNullArg warning). It's a cleanup, which we should definitely 
do. But other then that, I do not see issues with this solution.

> Then again, since it doesn't cost /that/ much, maybe this is a case of "Clang 
> should Do The Right Thing" by default. So I withdraw my objection.
> 
> Jordy
> 

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to