Skip to content
This repository was archived by the owner on May 16, 2025. It is now read-only.

Commit f44fe06

Browse files
committed
Mac - route cache smear protection
1 parent 74f1134 commit f44fe06

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

volatility/plugins/mac/route.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,15 @@ class mac_route(common.AbstractMacCommand):
3434
def _get_table(self, tbl):
3535
rnh = tbl #obj.Object("radix_node", offset=tbl.v(), vm=self.addr_space)
3636
rn = rnh.rnh_treetop
37-
37+
38+
seen = set()
3839
while rn.is_valid() and rn.rn_bit >= 0:
39-
rn = rn.rn_u.rn_node.rn_L
40+
if rn.v() in seen:
41+
break
42+
seen.add(rn.v())
4043

44+
rn = rn.rn_u.rn_node.rn_L
45+
4146
rnhash = {}
4247

4348
while rn.is_valid():
@@ -48,7 +53,12 @@ def _get_table(self, tbl):
4853

4954
rnhash[rn] = 1
5055

56+
seen = set()
5157
while rn.is_valid() and rn.rn_parent.rn_u.rn_node.rn_R == rn and rn.rn_flags & 2 == 0:
58+
if rn.v() in seen:
59+
break
60+
seen.add(rn.v())
61+
5262
rn = rn.rn_parent
5363

5464
rn = rn.rn_parent.rn_u.rn_node.rn_R
@@ -60,7 +70,12 @@ def _get_table(self, tbl):
6070

6171
nextptr = rn
6272

73+
seen = set()
6374
while base.v() != 0:
75+
if base.v() in seen:
76+
break
77+
seen.add(base.v())
78+
6479
rn = base
6580
base = rn.rn_u.rn_leaf.rn_Dupedkey
6681

0 commit comments

Comments
 (0)