| /// Use ARRAY_SIZE instead of dividing sizeof array with sizeof an element | 
 | /// | 
 | //# This makes an effort to find cases where the argument to sizeof is wrong | 
 | //# in memory allocation functions by checking the type of the allocated memory | 
 | //# when it is a double pointer and ensuring the sizeof argument takes a pointer | 
 | //# to the the memory being allocated. There are false positives in cases the | 
 | //# sizeof argument is not used in constructing the return value. The result | 
 | //# may need some reformatting. | 
 | // | 
 | // Confidence: Moderate | 
 | // Copyright: (C) 2014 Himangi Saraogi.  GPLv2. | 
 | // Comments: | 
 | // Options: | 
 |  | 
 | virtual patch | 
 | virtual context | 
 | virtual org | 
 | virtual report | 
 |  | 
 | //---------------------------------------------------------- | 
 | //  For context mode | 
 | //---------------------------------------------------------- | 
 |  | 
 | @depends on context disable sizeof_type_expr@ | 
 | type T; | 
 | T **x; | 
 | @@ | 
 |  | 
 |   x = | 
 |   <+...sizeof( | 
 | * T | 
 |   )...+> | 
 |  | 
 | //---------------------------------------------------------- | 
 | //  For patch mode | 
 | //---------------------------------------------------------- | 
 |  | 
 | @depends on patch disable sizeof_type_expr@ | 
 | type T; | 
 | T **x; | 
 | @@ | 
 |  | 
 |   x = | 
 |   <+...sizeof( | 
 | - T | 
 | + *x | 
 |   )...+> | 
 |  | 
 | //---------------------------------------------------------- | 
 | //  For org and report mode | 
 | //---------------------------------------------------------- | 
 |  | 
 | @r depends on (org || report) disable sizeof_type_expr@ | 
 | type T; | 
 | T **x; | 
 | position p; | 
 | @@ | 
 |  | 
 |   x = | 
 |   <+...sizeof( | 
 |   T@p | 
 |   )...+> | 
 |  | 
 | @script:python depends on org@ | 
 | p << r.p; | 
 | @@ | 
 |  | 
 | coccilib.org.print_todo(p[0], "WARNING sizeof argument should be pointer type, not structure type") | 
 |  | 
 | @script:python depends on report@ | 
 | p << r.p; | 
 | @@ | 
 |  | 
 | msg="WARNING: Use correct pointer type argument for sizeof" | 
 | coccilib.report.print_report(p[0], msg) | 
 |  |