Coccinelle Archive on lore.kernel.org
 help / color / Atom feed
* [Cocci] Backward compatibility issue
@ 2021-02-11 12:09 Denis Efremov
  2021-02-11 13:46 ` Julia Lawall
  2021-02-12 14:04 ` Julia Lawall
  0 siblings, 2 replies; 5+ messages in thread
From: Denis Efremov @ 2021-02-11 12:09 UTC (permalink / raw)
  To: cocci

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

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Cocci] Backward compatibility issue
  2021-02-11 12:09 [Cocci] Backward compatibility issue Denis Efremov
@ 2021-02-11 13:46 ` Julia Lawall
  2021-02-12 14:04 ` Julia Lawall
  1 sibling, 0 replies; 5+ messages in thread
From: Julia Lawall @ 2021-02-11 13:46 UTC (permalink / raw)
  To: Denis Efremov; +Cc: cocci



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

Thanks for the report.  Maybe sometimes making the parser work better
actually makes it work worse...  I'll check on it.

julia


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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Cocci] Backward compatibility issue
  2021-02-11 12:09 [Cocci] Backward compatibility issue Denis Efremov
  2021-02-11 13:46 ` Julia Lawall
@ 2021-02-12 14:04 ` Julia Lawall
  2021-02-12 20:18   ` Denis Efremov
  1 sibling, 1 reply; 5+ messages in thread
From: Julia Lawall @ 2021-02-12 14:04 UTC (permalink / raw)
  To: Denis Efremov; +Cc: cocci



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.

julia


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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Cocci] Backward compatibility issue
  2021-02-12 14:04 ` Julia Lawall
@ 2021-02-12 20:18   ` Denis Efremov
  2021-02-13  7:46     ` Julia Lawall
  0 siblings, 1 reply; 5+ messages in thread
From: Denis Efremov @ 2021-02-12 20:18 UTC (permalink / raw)
  To: Julia Lawall; +Cc: cocci



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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Cocci] Backward compatibility issue
  2021-02-12 20:18   ` Denis Efremov
@ 2021-02-13  7:46     ` Julia Lawall
  0 siblings, 0 replies; 5+ messages in thread
From: Julia Lawall @ 2021-02-13  7:46 UTC (permalink / raw)
  To: Denis Efremov; +Cc: cocci



On Fri, 12 Feb 2021, Denis Efremov wrote:

>
>
> 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.

Strange, I'll check.

> 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?

Typedef allows the thing to be used as a type.  But in semantic patch that
oyu have, there is no way for Coccinelle to know that u32 is being used as
a type.  It's just the argument to a macro.  It could be any identifier.

Symbol just means "this is an identifier I want to match exactly, and I
don't want the semantic patch parser to ask me if it should be a
metavariable".  It actually has no impact on the matching process.

julia
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, back to index

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-11 12:09 [Cocci] Backward compatibility issue Denis Efremov
2021-02-11 13:46 ` Julia Lawall
2021-02-12 14:04 ` Julia Lawall
2021-02-12 20:18   ` Denis Efremov
2021-02-13  7:46     ` Julia Lawall

Coccinelle Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/cocci/0 cocci/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 cocci cocci/ https://lore.kernel.org/cocci \
		cocci@systeme.lip6.fr
	public-inbox-index cocci

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/fr.lip6.systeme.cocci


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git