On Mon, 11 Jan 2021, Denis Efremov wrote:

>
>
> On 1/11/21 11:40 PM, Julia Lawall wrote:
> >
> >
> > On Mon, 11 Jan 2021, Denis Efremov wrote:
> >
> >>
> >>
> >> On 1/11/21 11:23 PM, Julia Lawall wrote:
> >>>
> >>>
> >>> On Mon, 11 Jan 2021, Denis Efremov wrote:
> >>>
> >>>> Hi,
> >>>>
> >>>> Let's suppose I want to match otx_cpt_aead_cbc_aes_sha_setkey() function 
> >>>> from
> >>>> drivers/crypto/marvell/octeontx/otx_cptvf_algs.c file (linux kernel).
> >>>>
> >>>> My pattern:
> >>>> @exists@
> >>>> identifier rta, param, key, keylen;
> >>>> position p;
> >>>> @@
> >>>>
> >>>> otx_cpt_aead_cbc_aes_sha_setkey(...,
> >>>>  unsigned char *key, unsigned int keylen)
> >>>> {
> >>>>  ...
> >>>> *        if (RTA_PAYLOAD(rta) < sizeof(*param))@p
> >>>>          goto badkey;
> >>>>  ...
> >>>> *        key += RTA_ALIGN(rta->rta_len);
> >>>> *        keylen -= RTA_ALIGN(rta->rta_len);
> >>>>  ...
> >>>> }
> >>>>
> >>>> $ spatch --no-includes --include-headers --cocci-file test.cocci 
> >>>> drivers/crypto/marvell/octeontx/otx_cptvf_algs.c
> >>>> init_defs_builtins: /usr/lib64/coccinelle/standard.h
> >>>> minus: parse error:
> >>>>   File "test.cocci", line 13, column 9, charpos = 219
> >>>>   around = 'RTA_ALIGN',
> >>>>   whole content = *     key += RTA_ALIGN(rta->rta_len);
> >>>>
> >>>>
> >>>> What can I do to match RTA_ALIGN(...) lines?
> >>>
> >>> I don't understand the problem.  I took your rule and your command line,
> >>> and everything was fine.
> >>
> >> I use version:
> >> spatch version 1.0.8-gc1dbb4f-dirty compiled with OCaml version 4.11.1
> >> Flags passed to the configure script: --build=x86_64-redhat-linux-gnu 
> >> --host=x86_64-redhat-linux-gnu --program-prefix= 
> >> --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr 
> >> --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc 
> >> --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 
> >> --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib 
> >> --mandir=/usr/share/man --infodir=/usr/share/info 
> >> --with-python=/usr/bin/python3 --with-menhir=/usr/bin/menhir
> >> OCaml scripting support: yes
> >> Python scripting support: yes
> >> Syntax of regular expressions: PCRE
> >>
> >> Maybe parsing error is fixed in new versions?
> >
> > I can't imagine what would cause a parsing error here.  I don't see what
> > could be special about RTA_ALIGN.  Normally Coccinelle doesn't even know
> > that it is a macro.  Maybe you can try to simplify the semantic patch a
> > little bit and see if there is some change that causes the problem to
> > disappear?  Does the problem disappear if you use a name other than
> > RTA_ALIGN?
>
> Changing:
>       key += RTA_ALIGN(rta->rta_len);
> to:
>       key = RTA_ALIGN(rta->rta_len);
>
> makes the parsing error disappear.
>
> Using aop instead of += leads to the same parsing error:
> assignment operator aop;
> key aop RTA_ALIGN(rta->rta_len);
> init_defs_builtins: /usr/lib64/coccinelle/standard.h
> minus: parse error:
>   File "test.cocci", line 14, column 10, charpos = 245
>   around = 'RTA_ALIGN',
>   whole content = *     key aop RTA_ALIGN(rta->rta_len);

I assume not, but does spatch --parse-cocci test.cocci work?

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

Reply via email to