arm64: zynqmp: Add support for OF_SEPARATE with board DTB
[oweals/u-boot.git] / scripts / coccinelle / null / kmerr.cocci
1 /// This semantic patch looks for malloc etc that are not followed by a
2 /// NULL check.  It only gives a report in the case where there is some
3 /// error handling code later in the function, which may be helpful
4 /// in determining what the error handling code for the call to malloc etc
5 /// should be.
6 ///
7 // Confidence: High
8 // Copyright: (C) 2010 Nicolas Palix, DIKU.  GPLv2.
9 // Copyright: (C) 2010 Julia Lawall, DIKU.  GPLv2.
10 // Copyright: (C) 2010 Gilles Muller, INRIA/LiP6.  GPLv2.
11 // URL: http://coccinelle.lip6.fr/
12 // Comments:
13 // Options: --no-includes --include-headers
14 //
15 // SPDX-License-Identifier:     GPL-2.0
16 //
17
18 virtual context
19 virtual org
20 virtual report
21
22 @withtest@
23 expression x;
24 position p;
25 identifier f,fld;
26 @@
27
28 x@p = f(...);
29 ... when != x->fld
30 \(x == NULL \| x != NULL\)
31
32 @fixed depends on context && !org && !report@
33 expression x,x1;
34 position p1 != withtest.p;
35 statement S;
36 position any withtest.p;
37 identifier f;
38 @@
39
40 *x@p1 = \(malloc\|calloc\)(...);
41 ...
42 *x1@p = f(...);
43 if (!x1) S
44
45 // ------------------------------------------------------------------------
46
47 @rfixed depends on (org || report) && !context exists@
48 expression x,x1;
49 position p1 != withtest.p;
50 position p2;
51 statement S;
52 position any withtest.p;
53 identifier f;
54 @@
55
56 x@p1 = \(malloc\|calloc\)(...);
57 ...
58 x1@p = f@p2(...);
59 if (!x1) S
60
61 @script:python depends on org@
62 p1 << rfixed.p1;
63 p2 << rfixed.p2;
64 @@
65
66 cocci.print_main("alloc call",p1)
67 cocci.print_secs("possible model",p2)
68
69 @script:python depends on report@
70 p1 << rfixed.p1;
71 p2 << rfixed.p2;
72 @@
73
74 msg = "alloc with no test, possible model on line %s" % (p2[0].line)
75 coccilib.report.print_report(p1[0],msg)