cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

badty.cocci (1729B)


      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