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