changeset 1874:1c9215154d4a

Handle /proc/.../maps being reordered We now search for the first r-xp line in the file
author Matt Johnston <matt@ucc.asn.au>
date Thu, 03 Feb 2022 22:13:06 +0800
parents 2c9d635a1c04
children bfa92efd814b
files test/parent_dropbear_map.py test/test_aslr.py
diffstat 2 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/test/parent_dropbear_map.py	Thu Feb 03 22:12:11 2022 +0800
+++ b/test/parent_dropbear_map.py	Thu Feb 03 22:13:06 2022 +0800
@@ -9,7 +9,7 @@
 
 
 want_name = "dropbear"
-# Walks up the parent process tree, prints the first line of /proc/pid/maps when
+# Walks up the parent process tree, prints a r-xp line of /proc/pid/maps when
 # it finds the wanted name
 
 def main():
@@ -22,8 +22,10 @@
 
 			if want_name in p.name():
 				with (Path('/proc') / str(p.pid) / "maps").open() as f:
-					map0 = f.readline().rstrip()
-				print(map0)
+					for i, l in enumerate(f, 1):
+						if ' r-xp ' in l:
+							print(l.rstrip())
+							break
 				return
 
 		raise RuntimeError(f"Couldn't find parent {want_name} process")
--- a/test/test_aslr.py	Thu Feb 03 22:12:11 2022 +0800
+++ b/test/test_aslr.py	Thu Feb 03 22:13:06 2022 +0800
@@ -28,7 +28,6 @@
 	# expect something like
 	# "563174d59000-563174d5d000 r--p 00000000 00:29 4242372                    /home/matt/src/dropbear/build/dropbear"
 	assert map1.endswith('/dropbear') or map1.endswith('/dropbearmulti')
-	assert ' r--p ' in map1
 	a1 = map1.split()[0]
 	a2 = map2.split()[0]
 	print(a1)