162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/// Free of a structure field
362306a36Sopenharmony_ci///
462306a36Sopenharmony_ci// Confidence: High
562306a36Sopenharmony_ci// Copyright: (C) 2013 Julia Lawall, INRIA/LIP6.
662306a36Sopenharmony_ci// URL: https://coccinelle.gitlabpages.inria.fr/website
762306a36Sopenharmony_ci// Comments:
862306a36Sopenharmony_ci// Options: --no-includes --include-headers
962306a36Sopenharmony_ci
1062306a36Sopenharmony_civirtual org
1162306a36Sopenharmony_civirtual report
1262306a36Sopenharmony_civirtual context
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci@r depends on context || report || org @
1562306a36Sopenharmony_ciexpression e;
1662306a36Sopenharmony_ciidentifier f;
1762306a36Sopenharmony_ciposition p;
1862306a36Sopenharmony_ci@@
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci(
2162306a36Sopenharmony_ci* kfree@p(&e->f)
2262306a36Sopenharmony_ci|
2362306a36Sopenharmony_ci* kfree_sensitive@p(&e->f)
2462306a36Sopenharmony_ci)
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci@script:python depends on org@
2762306a36Sopenharmony_cip << r.p;
2862306a36Sopenharmony_ci@@
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_cicocci.print_main("kfree",p)
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci@script:python depends on report@
3362306a36Sopenharmony_cip << r.p;
3462306a36Sopenharmony_ci@@
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_cimsg = "ERROR: invalid free of structure field"
3762306a36Sopenharmony_cicoccilib.report.print_report(p[0],msg)
38