diff options
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/relocate_sdk.py | 13 |
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: |