cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

error-use-after-free.cocci (1362B)


      1// Find and fix trivial use-after-free of Error objects
      2//
      3// Copyright (c) 2020 Virtuozzo International GmbH.
      4//
      5// This program is free software; you can redistribute it and/or
      6// modify it under the terms of the GNU General Public License as
      7// published by the Free Software Foundation; either version 2 of the
      8// License, or (at your option) any later version.
      9//
     10// This program is distributed in the hope that it will be useful,
     11// but WITHOUT ANY WARRANTY; without even the implied warranty of
     12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13// GNU General Public License for more details.
     14//
     15// You should have received a copy of the GNU General Public License
     16// along with this program.  If not, see
     17// <http://www.gnu.org/licenses/>.
     18//
     19// How to use:
     20// spatch --sp-file scripts/coccinelle/error-use-after-free.cocci \
     21//  --macro-file scripts/cocci-macro-file.h --in-place \
     22//  --no-show-diff ( FILES... | --use-gitgrep . )
     23
     24@ exists@
     25identifier fn, fn2;
     26expression err;
     27@@
     28
     29 fn(...)
     30 {
     31     <...
     32(
     33     error_free(err);
     34+    err = NULL;
     35|
     36     error_report_err(err);
     37+    err = NULL;
     38|
     39     error_reportf_err(err, ...);
     40+    err = NULL;
     41|
     42     warn_report_err(err);
     43+    err = NULL;
     44|
     45     warn_reportf_err(err, ...);
     46+    err = NULL;
     47)
     48     ... when != err = NULL
     49         when != exit(...)
     50     fn2(..., err, ...)
     51     ...>
     52 }