aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/relocate_sdk.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/relocate_sdk.py')
-rwxr-xr-xscripts/relocate_sdk.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/scripts/relocate_sdk.py b/scripts/relocate_sdk.py
index ceca1f2563..99fca86a12 100755
--- a/scripts/relocate_sdk.py
+++ b/scripts/relocate_sdk.py
@@ -112,7 +112,7 @@ def change_interpreter(elf_file_name):
f.write(dl_path)
break
-def change_dl_sysdirs():
+def change_dl_sysdirs(elf_file_name):
if arch == 32:
sh_fmt = "<IIIIIIIIII"
else:
@@ -156,6 +156,11 @@ def change_dl_sysdirs():
elif name == b(".ldsocache"):
ldsocache_path = f.read(sh_size)
new_ldsocache_path = old_prefix.sub(new_prefix, ldsocache_path)
+ new_ldsocache_path = new_ldsocache_path.rstrip(b("\0"))
+ if (len(new_ldsocache_path) >= sh_size):
+ print("ERROR: could not relocate %s, .ldsocache section size = %i and %i is needed." \
+ % (elf_file_name, sh_size, len(new_ldsocache_path)))
+ sys.exit(-1)
# pad with zeros
new_ldsocache_path += b("\0") * (sh_size - len(new_ldsocache_path))
# write it back
@@ -167,6 +172,10 @@ def change_dl_sysdirs():
path = f.read(4096)
new_path = old_prefix.sub(new_prefix, path)
new_path = new_path.rstrip(b("\0"))
+ if (len(new_path) >= 4096):
+ print("ERROR: could not relocate %s, max path size = 4096 and %i is needed." \
+ % (elf_file_name, len(new_path)))
+ sys.exit(-1)
# pad with zeros
new_path += b("\0") * (4096 - len(new_path))
#print "Changing %s to %s at %s" % (str(path), str(new_path), str(offset))
@@ -241,7 +250,7 @@ for e in executables_list:
if arch:
parse_elf_header()
change_interpreter(e)
- change_dl_sysdirs()
+ change_dl_sysdirs(e)
""" change permissions back """
if perms: