Hi Julia,
I am not sure if I was clear. but, let me try to explain again.
1. I have the code.
$ cat sample.c
int foo() {
int id;
struct mydata h1, *h2, s1, *s2;
// works fine
my_printf("%s",
h1.name);
my_printf("%s", h2->name);
// don't work
my_printf("%d it would work but dunno mydata=%m\n", id, h2);
my_printf("%d here also, tt=%s and %m\n", id, h2->name, s2);
}
$
2. My fix-format.cocci
$ cat fix-format.cocci
@r1_heap@
struct mydata *SMD;
format F =~ "s";
expression f;
@@
-f("%@F@", SMD->name);
+f("%m", SMD);
@r1_stack@
struct mydata SMD;
format F =~ "s";
expression f;
@@
-f("%@F@", SMD.name);
+f("%m", &SMD);
$
3. therefore, It is not matching with my_printf("%d it would work but dunno mydata=%m\n", id, h2);
e.g:
$ spatch --sp-file fix-format.cocci sample.c
HANDLING: /tmp/sample.c
diff =
--- /tmp/sample.c
+++ /tmp/T/cocci-output-92962-556a08-sample.c
@@ -4,8 +4,8 @@ int foo() {
struct mydata h1, *h2, s1, *s2;
// works fine
- my_printf("%s",
h1.name);
- my_printf("%s", h2->name);
+ my_printf("%m", &h1);
+ my_printf("%m", h2);
// don't work
my_printf("%d it would work but dunno mydata=%m\n", id, h2);
$
so, is it possible to fix my format-string?