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 7virtual patch 8virtual context 9virtual org 10virtual report 11 12@depends on context@ 13identifier var, arr; 14expression E; 15@@ 16( 17struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 18 ..., 19 { 20 .var = E, 21* } 22}; 23| 24struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 25 ..., 26* { ..., E, ... }, 27}; 28) 29 30@depends on patch@ 31identifier var, arr; 32expression E; 33@@ 34( 35struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 36 ..., 37 { 38 .var = E, 39- } 40+ }, 41+ { } 42}; 43| 44struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 45 ..., 46 { ..., E, ... }, 47+ { }, 48}; 49) 50 51@r depends on org || report@ 52position p1; 53identifier var, arr; 54expression E; 55@@ 56( 57struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 58 ..., 59 { 60 .var = E, 61 } 62 @p1 63}; 64| 65struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 66 ..., 67 { ..., E, ... } 68 @p1 69}; 70) 71 72@script:python depends on org@ 73p1 << r.p1; 74arr << r.arr; 75@@ 76 77cocci.print_main(arr,p1) 78 79@script:python depends on report@ 80p1 << r.p1; 81arr << r.arr; 82@@ 83 84msg = "%s is not NULL terminated at line %s" % (arr, p1[0].line) 85coccilib.report.print_report(p1[0],msg) 86