1 // SPDX-License-Identifier: GPL-2.0 2 /// Make sure (of/i2c/platform)_device_id tables are NULL terminated 3 // 4 // Keywords: of_table i2c_table platform_table 5 // Confidence: Medium 6 // Options: --include-headers 7 8 virtual patch 9 virtual context 10 virtual org 11 virtual report 12 13 @depends on context@ 14 identifier var, arr; 15 expression E; 16 @@ 17 ( 18 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 19 ..., 20 { 21 .var = E, 22 * } 23 }; 24 | 25 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 26 ..., 27 * { ..., E, ... }, 28 }; 29 ) 30 31 @depends on patch@ 32 identifier var, arr; 33 expression E; 34 @@ 35 ( 36 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 37 ..., 38 { 39 .var = E, 40 - } 41 + }, 42 + { } 43 }; 44 | 45 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 46 ..., 47 { ..., E, ... }, 48 + { }, 49 }; 50 ) 51 52 @r depends on org || report@ 53 position p1; 54 identifier var, arr; 55 expression E; 56 @@ 57 ( 58 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 59 ..., 60 { 61 .var = E, 62 } 63 @p1 64 }; 65 | 66 struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 67 ..., 68 { ..., E, ... } 69 @p1 70 }; 71 ) 72 73 @script:python depends on org@ 74 p1 << r.p1; 75 arr << r.arr; 76 @@ 77 78 cocci.print_main(arr,p1) 79 80 @script:python depends on report@ 81 p1 << r.p1; 82 arr << r.arr; 83 @@ 84 85 msg = "%s is not NULL terminated at line %s" % (arr, p1[0].line) 86 coccilib.report.print_report(p1[0],msg)
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.