%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
// 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)