diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/coccinelle/misc/doubleinit.cocci | 6 | ||||
| -rw-r--r-- | scripts/coccinelle/null/deref_null.cocci | 39 |
2 files changed, 17 insertions, 28 deletions
diff --git a/scripts/coccinelle/misc/doubleinit.cocci b/scripts/coccinelle/misc/doubleinit.cocci index 55d7dc19dfe0..156b20adb351 100644 --- a/scripts/coccinelle/misc/doubleinit.cocci +++ b/scripts/coccinelle/misc/doubleinit.cocci | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | // Copyright: (C) 2010 Julia Lawall, DIKU. GPLv2. | 7 | // Copyright: (C) 2010 Julia Lawall, DIKU. GPLv2. |
| 8 | // Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2. | 8 | // Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2. |
| 9 | // URL: http://coccinelle.lip6.fr/ | 9 | // URL: http://coccinelle.lip6.fr/ |
| 10 | // Comments: | 10 | // Comments: requires at least Coccinelle 0.2.4, lex or parse error otherwise |
| 11 | // Options: -no_includes -include_headers | 11 | // Options: -no_includes -include_headers |
| 12 | 12 | ||
| 13 | virtual org | 13 | virtual org |
| @@ -19,7 +19,7 @@ position p0,p; | |||
| 19 | expression E; | 19 | expression E; |
| 20 | @@ | 20 | @@ |
| 21 | 21 | ||
| 22 | struct I s =@p0 { ... .fld@p = E, ...}; | 22 | struct I s =@p0 { ..., .fld@p = E, ...}; |
| 23 | 23 | ||
| 24 | @s@ | 24 | @s@ |
| 25 | identifier I, s, r.fld; | 25 | identifier I, s, r.fld; |
| @@ -27,7 +27,7 @@ position r.p0,p; | |||
| 27 | expression E; | 27 | expression E; |
| 28 | @@ | 28 | @@ |
| 29 | 29 | ||
| 30 | struct I s =@p0 { ... .fld@p = E, ...}; | 30 | struct I s =@p0 { ..., .fld@p = E, ...}; |
| 31 | 31 | ||
| 32 | @script:python depends on org@ | 32 | @script:python depends on org@ |
| 33 | p0 << r.p0; | 33 | p0 << r.p0; |
diff --git a/scripts/coccinelle/null/deref_null.cocci b/scripts/coccinelle/null/deref_null.cocci index 9969d76d0f4b..cdac6cfcce92 100644 --- a/scripts/coccinelle/null/deref_null.cocci +++ b/scripts/coccinelle/null/deref_null.cocci | |||
| @@ -11,21 +11,10 @@ | |||
| 11 | // Options: | 11 | // Options: |
| 12 | 12 | ||
| 13 | virtual context | 13 | virtual context |
| 14 | virtual patch | ||
| 15 | virtual org | 14 | virtual org |
| 16 | virtual report | 15 | virtual report |
| 17 | 16 | ||
| 18 | @initialize:python depends on !context && patch && !org && !report@ | 17 | @ifm@ |
| 19 | |||
| 20 | import sys | ||
| 21 | print >> sys.stderr, "This semantic patch does not support the 'patch' mode." | ||
| 22 | |||
| 23 | @depends on patch@ | ||
| 24 | @@ | ||
| 25 | |||
| 26 | this_rule_should_never_matches(); | ||
| 27 | |||
| 28 | @ifm depends on !patch@ | ||
| 29 | expression *E; | 18 | expression *E; |
| 30 | statement S1,S2; | 19 | statement S1,S2; |
| 31 | position p1; | 20 | position p1; |
| @@ -35,7 +24,7 @@ if@p1 ((E == NULL && ...) || ...) S1 else S2 | |||
| 35 | 24 | ||
| 36 | // The following two rules are separate, because both can match a single | 25 | // The following two rules are separate, because both can match a single |
| 37 | // expression in different ways | 26 | // expression in different ways |
| 38 | @pr1 depends on !patch expression@ | 27 | @pr1 expression@ |
| 39 | expression *ifm.E; | 28 | expression *ifm.E; |
| 40 | identifier f; | 29 | identifier f; |
| 41 | position p1; | 30 | position p1; |
| @@ -43,7 +32,7 @@ position p1; | |||
| 43 | 32 | ||
| 44 | (E != NULL && ...) ? <+...E->f@p1...+> : ... | 33 | (E != NULL && ...) ? <+...E->f@p1...+> : ... |
| 45 | 34 | ||
| 46 | @pr2 depends on !patch expression@ | 35 | @pr2 expression@ |
| 47 | expression *ifm.E; | 36 | expression *ifm.E; |
| 48 | identifier f; | 37 | identifier f; |
| 49 | position p2; | 38 | position p2; |
| @@ -59,7 +48,7 @@ position p2; | |||
| 59 | 48 | ||
| 60 | // For org and report modes | 49 | // For org and report modes |
| 61 | 50 | ||
| 62 | @r depends on !context && !patch && (org || report) exists@ | 51 | @r depends on !context && (org || report) exists@ |
| 63 | expression subE <= ifm.E; | 52 | expression subE <= ifm.E; |
| 64 | expression *ifm.E; | 53 | expression *ifm.E; |
| 65 | expression E1,E2; | 54 | expression E1,E2; |
| @@ -99,7 +88,7 @@ if@p1 ((E == NULL && ...) || ...) | |||
| 99 | } | 88 | } |
| 100 | else S3 | 89 | else S3 |
| 101 | 90 | ||
| 102 | @script:python depends on !context && !patch && !org && report@ | 91 | @script:python depends on !context && !org && report@ |
| 103 | p << r.p; | 92 | p << r.p; |
| 104 | p1 << ifm.p1; | 93 | p1 << ifm.p1; |
| 105 | x << ifm.E; | 94 | x << ifm.E; |
| @@ -109,7 +98,7 @@ msg="ERROR: %s is NULL but dereferenced." % (x) | |||
| 109 | coccilib.report.print_report(p[0], msg) | 98 | coccilib.report.print_report(p[0], msg) |
| 110 | cocci.include_match(False) | 99 | cocci.include_match(False) |
| 111 | 100 | ||
| 112 | @script:python depends on !context && !patch && org && !report@ | 101 | @script:python depends on !context && org && !report@ |
| 113 | p << r.p; | 102 | p << r.p; |
| 114 | p1 << ifm.p1; | 103 | p1 << ifm.p1; |
| 115 | x << ifm.E; | 104 | x << ifm.E; |
| @@ -120,7 +109,7 @@ msg_safe=msg.replace("[","@(").replace("]",")") | |||
| 120 | cocci.print_main(msg_safe,p) | 109 | cocci.print_main(msg_safe,p) |
| 121 | cocci.include_match(False) | 110 | cocci.include_match(False) |
| 122 | 111 | ||
| 123 | @s depends on !context && !patch && (org || report) exists@ | 112 | @s depends on !context && (org || report) exists@ |
| 124 | expression subE <= ifm.E; | 113 | expression subE <= ifm.E; |
| 125 | expression *ifm.E; | 114 | expression *ifm.E; |
| 126 | expression E1,E2; | 115 | expression E1,E2; |
| @@ -159,7 +148,7 @@ if@p1 ((E == NULL && ...) || ...) | |||
| 159 | } | 148 | } |
| 160 | else S3 | 149 | else S3 |
| 161 | 150 | ||
| 162 | @script:python depends on !context && !patch && !org && report@ | 151 | @script:python depends on !context && !org && report@ |
| 163 | p << s.p; | 152 | p << s.p; |
| 164 | p1 << ifm.p1; | 153 | p1 << ifm.p1; |
| 165 | x << ifm.E; | 154 | x << ifm.E; |
| @@ -168,7 +157,7 @@ x << ifm.E; | |||
| 168 | msg="ERROR: %s is NULL but dereferenced." % (x) | 157 | msg="ERROR: %s is NULL but dereferenced." % (x) |
| 169 | coccilib.report.print_report(p[0], msg) | 158 | coccilib.report.print_report(p[0], msg) |
| 170 | 159 | ||
| 171 | @script:python depends on !context && !patch && org && !report@ | 160 | @script:python depends on !context && org && !report@ |
| 172 | p << s.p; | 161 | p << s.p; |
| 173 | p1 << ifm.p1; | 162 | p1 << ifm.p1; |
| 174 | x << ifm.E; | 163 | x << ifm.E; |
| @@ -180,7 +169,7 @@ cocci.print_main(msg_safe,p) | |||
| 180 | 169 | ||
| 181 | // For context mode | 170 | // For context mode |
| 182 | 171 | ||
| 183 | @depends on context && !patch && !org && !report exists@ | 172 | @depends on context && !org && !report exists@ |
| 184 | expression subE <= ifm.E; | 173 | expression subE <= ifm.E; |
| 185 | expression *ifm.E; | 174 | expression *ifm.E; |
| 186 | expression E1,E2; | 175 | expression E1,E2; |
| @@ -223,7 +212,7 @@ else S3 | |||
| 223 | // The following three rules are duplicates of ifm, pr1 and pr2 respectively. | 212 | // The following three rules are duplicates of ifm, pr1 and pr2 respectively. |
| 224 | // It is need because the previous rule as already made a "change". | 213 | // It is need because the previous rule as already made a "change". |
| 225 | 214 | ||
| 226 | @ifm1 depends on !patch@ | 215 | @ifm1@ |
| 227 | expression *E; | 216 | expression *E; |
| 228 | statement S1,S2; | 217 | statement S1,S2; |
| 229 | position p1; | 218 | position p1; |
| @@ -231,7 +220,7 @@ position p1; | |||
| 231 | 220 | ||
| 232 | if@p1 ((E == NULL && ...) || ...) S1 else S2 | 221 | if@p1 ((E == NULL && ...) || ...) S1 else S2 |
| 233 | 222 | ||
| 234 | @pr11 depends on !patch expression@ | 223 | @pr11 expression@ |
| 235 | expression *ifm1.E; | 224 | expression *ifm1.E; |
| 236 | identifier f; | 225 | identifier f; |
| 237 | position p1; | 226 | position p1; |
| @@ -239,7 +228,7 @@ position p1; | |||
| 239 | 228 | ||
| 240 | (E != NULL && ...) ? <+...E->f@p1...+> : ... | 229 | (E != NULL && ...) ? <+...E->f@p1...+> : ... |
| 241 | 230 | ||
| 242 | @pr12 depends on !patch expression@ | 231 | @pr12 expression@ |
| 243 | expression *ifm1.E; | 232 | expression *ifm1.E; |
| 244 | identifier f; | 233 | identifier f; |
| 245 | position p2; | 234 | position p2; |
| @@ -253,7 +242,7 @@ position p2; | |||
| 253 | sizeof(<+...E->f@p2...+>) | 242 | sizeof(<+...E->f@p2...+>) |
| 254 | ) | 243 | ) |
| 255 | 244 | ||
| 256 | @depends on context && !patch && !org && !report exists@ | 245 | @depends on context && !org && !report exists@ |
| 257 | expression subE <= ifm1.E; | 246 | expression subE <= ifm1.E; |
| 258 | expression *ifm1.E; | 247 | expression *ifm1.E; |
| 259 | expression E1,E2; | 248 | expression E1,E2; |
