Linux Audio

Check our new training course

Loading...
v4.17
 1/// Use ARRAY_SIZE instead of dividing sizeof array with sizeof an element
 
 2///
 3//# This makes an effort to find cases where the argument to sizeof is wrong
 4//# in memory allocation functions by checking the type of the allocated memory
 5//# when it is a double pointer and ensuring the sizeof argument takes a pointer
 6//# to the the memory being allocated. There are false positives in cases the
 7//# sizeof argument is not used in constructing the return value. The result
 8//# may need some reformatting.
 9//
10// Confidence: Moderate
11// Copyright: (C) 2014 Himangi Saraogi.  GPLv2.
12// Comments:
13// Options:
14
15virtual patch
16virtual context
17virtual org
18virtual report
19
20//----------------------------------------------------------
21//  For context mode
22//----------------------------------------------------------
23
24@depends on context disable sizeof_type_expr@
25type T;
26T **x;
27@@
28
29  x =
30  <+...sizeof(
31* T
32  )...+>
33
34//----------------------------------------------------------
35//  For patch mode
36//----------------------------------------------------------
37
38@depends on patch disable sizeof_type_expr@
39type T;
40T **x;
41@@
42
43  x =
44  <+...sizeof(
45- T
46+ *x
47  )...+>
48
49//----------------------------------------------------------
50//  For org and report mode
51//----------------------------------------------------------
52
53@r depends on (org || report) disable sizeof_type_expr@
54type T;
55T **x;
56position p;
57@@
58
59  x =
60  <+...sizeof(
61  T@p
62  )...+>
63
64@script:python depends on org@
65p << r.p;
66@@
67
68coccilib.org.print_todo(p[0], "WARNING sizeof argument should be pointer type, not structure type")
69
70@script:python depends on report@
71p << r.p;
72@@
73
74msg="WARNING: Use correct pointer type argument for sizeof"
75coccilib.report.print_report(p[0], msg)
76
v6.8
 1// SPDX-License-Identifier: GPL-2.0-only
 2/// Correct the size argument to alloc functions
 3///
 4//# This makes an effort to find cases where the argument to sizeof is wrong
 5//# in memory allocation functions by checking the type of the allocated memory
 6//# when it is a double pointer and ensuring the sizeof argument takes a pointer
 7//# to the the memory being allocated. There are false positives in cases the
 8//# sizeof argument is not used in constructing the return value. The result
 9//# may need some reformatting.
10//
11// Confidence: Moderate
12// Copyright: (C) 2014 Himangi Saraogi.
13// Comments:
14// Options:
15
16virtual patch
17virtual context
18virtual org
19virtual report
20
21//----------------------------------------------------------
22//  For context mode
23//----------------------------------------------------------
24
25@depends on context disable sizeof_type_expr@
26type T;
27T **x;
28@@
29
30  x =
31  <+...sizeof(
32* T
33  )...+>
34
35//----------------------------------------------------------
36//  For patch mode
37//----------------------------------------------------------
38
39@depends on patch disable sizeof_type_expr@
40type T;
41T **x;
42@@
43
44  x =
45  <+...sizeof(
46- T
47+ *x
48  )...+>
49
50//----------------------------------------------------------
51//  For org and report mode
52//----------------------------------------------------------
53
54@r depends on (org || report) disable sizeof_type_expr@
55type T;
56T **x;
57position p;
58@@
59
60  x =
61  <+...sizeof(
62  T@p
63  )...+>
64
65@script:python depends on org@
66p << r.p;
67@@
68
69coccilib.org.print_todo(p[0], "WARNING sizeof argument should be pointer type, not structure type")
70
71@script:python depends on report@
72p << r.p;
73@@
74
75msg="WARNING: Use correct pointer type argument for sizeof"
76coccilib.report.print_report(p[0], msg)
77