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