Hi Julia, On Tue, 22 Feb 2022, Julia Lawall wrote: > [I]f there are some cases that are useful to do statically, with only > local information, then using Coccinelle could be useful to get the > problem out of the way once and for all. Coccinelle doesn't support > much processing of strings directly, but you can always write some > python code to test the contents of a string and to create a new one. > > Let me know if you want to try this. You can also check, eg the demo > demos/pythontococci.cocci to see how to create code in a python script and > then use it in a normal SmPL rule. > > If some context has to be taken into account and the context in the same > function, then that can also be done with Coccinelle, eg > > A > ... > B > > matches the case where after an A there is a B on all execution paths > (except perhaps those that end in an error exit) and > > A > ... when exists > B > > matches the case where there is a B sometime after executing A, even if > that does not always occur. > > If the context that you are interested in is in a called function or is in > the calling context, then Coccinelle might not be the ideal choice. > Coccinelle works on one function at a time, so to do anything > interprocedural, you have to do some hacks. Right. The code in question is not actually calling a function, but a macro, and passes a literal string to the macro that we would want to check statically. I did have my doubts that it would be easy with Coccinelle, but since Ævar seemed so confident, I tried it, struggled, and decided to follow up with you. Thank you for confirming my suspicion! Johannes