// SPDX-License-Identifier: GPL-2.0 /// Make sure (of/i2c/platform)_device_id tables are NULL terminated // // Keywords: of_table i2c_table platform_table // Confidence: Medium // Options: --include-headers virtual patch virtual context virtual org virtual report @depends on context@ identifier var, arr; expression E; @@ ( struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { ..., { .var = E, * } }; | struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { ..., * { ..., E, ... }, }; ) @depends on patch@ identifier var, arr; expression E; @@ ( struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { ..., { .var = E, - } + }, + { } }; | struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { ..., { ..., E, ... }, + { }, }; ) @r depends on org || report@ position p1; identifier var, arr; expression E; @@ ( struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { ..., { .var = E, } @p1 }; | struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { ..., { ..., E, ... } @p1 }; ) @script:python depends on org@ p1 << r.p1; arr << r.arr; @@ cocci.print_main(arr,p1) @script:python depends on report@ p1 << r.p1; arr << r.arr; @@ msg = "%s is not NULL terminated at line %s" % (arr, p1[0].line) coccilib.report.print_report(p1[0],msg)