coccinelle: Improve checking for missing NULL terminators
[deliverable/linux.git] / scripts / coccinelle / misc / of_table.cocci
1 /// Make sure (of/i2c/platform)_device_id tables are NULL terminated
2 //
3 // Keywords: of_table i2c_table platform_table
4 // Confidence: Medium
5 // Options: --include-headers
6
7 virtual patch
8 virtual context
9 virtual org
10 virtual report
11
12 @depends on context@
13 identifier var, arr;
14 expression E;
15 @@
16 (
17 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
18 ...,
19 {
20 .var = E,
21 * }
22 };
23 |
24 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
25 ...,
26 * { ..., E, ... },
27 };
28 )
29
30 @depends on patch@
31 identifier var, arr;
32 expression E;
33 @@
34 (
35 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
36 ...,
37 {
38 .var = E,
39 - }
40 + },
41 + { }
42 };
43 |
44 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
45 ...,
46 { ..., E, ... },
47 + { },
48 };
49 )
50
51 @r depends on org || report@
52 position p1;
53 identifier var, arr;
54 expression E;
55 @@
56 (
57 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
58 ...,
59 {
60 .var = E,
61 }
62 @p1
63 };
64 |
65 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
66 ...,
67 { ..., E, ... }
68 @p1
69 };
70 )
71
72 @script:python depends on org@
73 p1 << r.p1;
74 arr << r.arr;
75 @@
76
77 cocci.print_main(arr,p1)
78
79 @script:python depends on report@
80 p1 << r.p1;
81 arr << r.arr;
82 @@
83
84 msg = "%s is not NULL terminated at line %s" % (arr, p1[0].line)
85 coccilib.report.print_report(p1[0],msg)
This page took 0.03229 seconds and 5 git commands to generate.