#!/usr/bin/perl # # This software may be used and distributed according to the terms # of the GNU General Public License, incorporated herein by reference. # # Copyright 2004 Michael Stefaniuc use smatch; use strict; sub error_msg() { my $msg = shift; print get_filename(), " ", get_lineno(), " ", get_cur_func(), ": HeapFree NULL check\n"; } while(my $data = get_data()){ if ($data =~ /^if_cond var_decl\((.*)\)/) { my $variable = $1; $data = get_data(); if ($data =~ /^cmpstmt_start$/) { $data = get_data(); } if ($data =~ /^expr_stmt call_expr\(\(addr_expr function_decl\(HeapFree\)\).*var_decl\($variable\)\)\)/) { error_msg(); } else { redo; } } }