mirror of https://github.com/OISF/suricata
Coccinelle: test invalid Packet usage
This coccinelle patches is checking that there is no direct use of p->pkt or p->pktlen in the code. This variable must be acceded via GET_PKT_* macros.remotes/origin/master-1.1.x
parent
cec7ece697
commit
12369b4393
@ -0,0 +1,55 @@
|
|||||||
|
@init@
|
||||||
|
typedef Packet;
|
||||||
|
Packet *p;
|
||||||
|
expression E;
|
||||||
|
statement S;
|
||||||
|
@@
|
||||||
|
|
||||||
|
(
|
||||||
|
memset(p, ...);
|
||||||
|
p->pkt = E;
|
||||||
|
|
|
||||||
|
p = SCCalloc(...);
|
||||||
|
S
|
||||||
|
p->pkt = E;
|
||||||
|
)
|
||||||
|
|
||||||
|
@pktfield depends on !init@
|
||||||
|
identifier func !~= "^PacketCopyDataOffset$";
|
||||||
|
Packet *p;
|
||||||
|
position p1;
|
||||||
|
@@
|
||||||
|
|
||||||
|
func(...) {
|
||||||
|
<...
|
||||||
|
p->pkt@p1
|
||||||
|
...>
|
||||||
|
}
|
||||||
|
|
||||||
|
@ script:python @
|
||||||
|
p1 << pktfield.p1;
|
||||||
|
@@
|
||||||
|
|
||||||
|
print "Invalid Packet->pkt usage, GET_PKT_DATA macro must be used at %s:%s" % (p1[0].file, p1[0].line)
|
||||||
|
import sys
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
@pktlenfield@
|
||||||
|
identifier func !~= "^PacketCopyDataOffset$";
|
||||||
|
Packet *p;
|
||||||
|
position p1;
|
||||||
|
@@
|
||||||
|
|
||||||
|
func(...) {
|
||||||
|
<...
|
||||||
|
p->pktlen@p1
|
||||||
|
...>
|
||||||
|
}
|
||||||
|
|
||||||
|
@ script:python @
|
||||||
|
p1 << pktlenfield.p1;
|
||||||
|
@@
|
||||||
|
|
||||||
|
print "Invalid Packet->pktlen usage, GET_PKT_LEN macro must be used at %s:%s" % (p1[0].file, p1[0].line)
|
||||||
|
import sys
|
||||||
|
sys.exit(1)
|
Loading…
Reference in New Issue