Update mount enumeration v2

This commit is contained in:
Andrew Case
2019-04-22 14:07:38 -05:00
parent 1cd33e071c
commit b87c4648ed
2 changed files with 6 additions and 11 deletions
+5 -5
View File
@@ -144,7 +144,7 @@ def walk_internal_list(struct_name, list_member, list_start, addr_space = None):
list_start = getattr(list_struct, list_member)
# based on __d_path
def do_get_path(rdentry, rmnt, dentry, vfsmnt):
def do_get_path(dentry, rmnt, rdentry, vfsmnt):
ret_path = []
inode = dentry.d_inode
@@ -153,16 +153,16 @@ def do_get_path(rdentry, rmnt, dentry, vfsmnt):
return []
while (dentry != rdentry or vfsmnt != rmnt) and dentry.d_name.name.is_valid():
dname = dentry.d_name.name.dereference_as("String", length = MAX_STRING_LENGTH)
ret_path.append(dname.strip('/'))
if dentry == vfsmnt.mnt_root or dentry == dentry.d_parent:
ret_path.append('')
if vfsmnt.mnt_parent == vfsmnt.v():
break
dentry = vfsmnt.mnt_mountpoint
vfsmnt = vfsmnt.mnt_parent
continue
dname = dentry.d_name.name.dereference_as("String", length = MAX_STRING_LENGTH)
ret_path.append(dname.strip('/'))
parent = dentry.d_parent
dentry = parent
+1 -6
View File
@@ -67,12 +67,7 @@ class linux_mount(linux_common.AbstractLinuxCommand):
if not fstype.is_valid():
return ret
#print fs_types
#if str(fstype) not in fs_types:
# return ret
path = linux_common.do_get_path(mnt.mnt_sb.s_root, mnt.mnt_parent, mnt.mnt_root, mnt)
if path == []:
return ret
@@ -173,7 +168,7 @@ class linux_mount(linux_common.AbstractLinuxCommand):
for t in tmp_mnts:
tt = t.mnt_devname.dereference_as("String", length = linux_common.MAX_STRING_LENGTH)
if tt:
if len(str(tt)) > 2:
if len(str(tt)) > 2 or str(tt)[0] == '/':
all_mnts.append(t)
list_mnts = {}