CasperSecurity

Current Path : /usr/src/linux-headers-5.15.0-170/scripts/coccinelle/tests/
Upload File :
Current File : //usr/src/linux-headers-5.15.0-170/scripts/coccinelle/tests/odd_ptr_err.cocci

// SPDX-License-Identifier: GPL-2.0-only
/// PTR_ERR should access the value just tested by IS_ERR
//# There can be false positives in the patch case, where it is the call to
//# IS_ERR that is wrong.
///
// Confidence: High
// Copyright: (C) 2012, 2015 Julia Lawall, INRIA.
// Copyright: (C) 2012, 2015 Gilles Muller, INRIA.
// URL: http://coccinelle.lip6.fr/
// Options: --no-includes --include-headers

virtual patch
virtual context
virtual org
virtual report

@ok1 exists@
expression x,e;
position p;
@@

if (IS_ERR(x=e) || ...) {
  <...
   PTR_ERR@p(x)
  ...>
}

@ok2 exists@
expression x,e1,e2;
position p;
@@

if (IS_ERR(x) || ...) {
  <...
(
   PTR_ERR@p(\(e1 ? e2 : x\|e1 ? x : e2\))
|
   PTR_ERR@p(x)
)
  ...>
}

@r1 depends on patch && !context && !org && !report exists@
expression x,y;
position p != {ok1.p,ok2.p};
@@

if (IS_ERR(x) || ...) {
  ... when any
      when != IS_ERR(...)
(
  PTR_ERR(x)
|
  PTR_ERR@p(
-     y
+     x
  )
)
  ... when any
}

// ----------------------------------------------------------------------------

@r1_context depends on !patch && (context || org || report) exists@
position p != {ok1.p,ok2.p};
expression x, y;
position j0, j1;
@@

if (IS_ERR@j0(x) || ...) {
  ... when any
      when != IS_ERR(...)
(
  PTR_ERR(x)
|
  PTR_ERR@j1@p(
     y
  )
)
  ... when any
}

@r1_disj depends on !patch && (context || org || report) exists@
position p != {ok1.p,ok2.p};
expression x, y;
position r1_context.j0, r1_context.j1;
@@

* if (IS_ERR@j0(x) || ...) {
  ... when any
      when != IS_ERR(...)
*   PTR_ERR@j1@p(
     y
  )
  ... when any
}

// ----------------------------------------------------------------------------

@script:python r1_org depends on org@
j0 << r1_context.j0;
j1 << r1_context.j1;
@@

msg = "inconsistent IS_ERR and PTR_ERR"
coccilib.org.print_todo(j0[0], msg)
coccilib.org.print_link(j1[0], "")

// ----------------------------------------------------------------------------

@script:python r1_report depends on report@
j0 << r1_context.j0;
j1 << r1_context.j1;
@@

msg = "inconsistent IS_ERR and PTR_ERR on line %s." % (j1[0].line)
coccilib.report.print_report(j0[0], msg)

Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY