On 2/12/21 5:04 PM, Julia Lawall wrote:
> 
> 
> On Thu, 11 Feb 2021, Denis Efremov wrote:
> 
>> Hi, one of my patterns started to fail tests on latest coccinelle.
>> I've bisected the commit that introduces "error". It's:
>> commit db60e916633d2cb3ae31140364783fdf85ed10f4
>> "make information about SmPL iterator and declarer names available to the C 
>> parser"
>>
>> To reproduce the error:
>> $ cd linux
>> $ git checkout 5b01014759991887b1e450c9def01e58c02ab81b
>> $ wget 
>> https://raw.githubusercontent.com/evdenis/cvehound/master/cvehound/cve/CVE-2016-9793.cocci
>> $ spatch -D detect --cocci-file CVE-2016-9793.cocci net/core/sock.c
>> # spatch before db60e916633d2cb3ae31140364783fdf85ed10f4 will find the match
>> net/core/sock.c:718:16-17: ERROR: CVE-2016-9793
>> net/core/sock.c:754:16-17: ERROR: CVE-2016-9793
>> ...
>> # spatch >= db60e916633d2cb3ae31140364783fdf85ed10f4 will not match the same 
>> code
> 
> If you change typedef u32 to symbol u32, it should be good.  It is no use
> to Coccinelle to know that u32 is a typedef in this code.

After changing typedef to symbol, git version starts to match the code,
but coccinelle 1.0.8 starts to fail the detection. Well, this doesn't
solve the problem for me.

What's the difference between symbol and typedef? How can I understand
when to use one or another?

Thanks,
Denis
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to