make sure binfile patches are a full 256 bytes (#258)

* make sure binfile patches are a full 256 bytes, including any necessary padding.

* assume binary patch values are always 256 byte zero filled.

* assume zero terminated patch values instead of a fixed length.

* add qmake patchs for qt_epfxpath and qt_hpfxpath.

* tighten up binary patch
This commit is contained in:
tsteven4
2021-06-08 18:29:48 -06:00
committed by GitHub
parent df43981ee6
commit f865f5f469

View File

@@ -39,7 +39,10 @@ class Updater:
if idx < 0: if idx < 0:
return return
assert len(newpath) < 256, "Qt Prefix path is too long(255)." assert len(newpath) < 256, "Qt Prefix path is too long(255)."
data = data[:idx] + key + newpath + data[idx + len(key) + len(newpath) :] oldlen = data[idx + len(key) :].find(b"\0")
assert oldlen >= 0
value = newpath + b"\0" * (oldlen - len(newpath))
data = data[: idx + len(key)] + value + data[idx + len(key) + len(value) :]
file.write_bytes(data) file.write_bytes(data)
os.chmod(str(file), st.st_mode) os.chmod(str(file), st.st_mode)
@@ -98,6 +101,16 @@ class Updater:
key=b"qt_prfxpath=", key=b"qt_prfxpath=",
newpath=bytes(str(self.prefix), "UTF-8"), newpath=bytes(str(self.prefix), "UTF-8"),
) )
self._patch_binfile(
self.qmake_path,
key=b"qt_epfxpath=",
newpath=bytes(str(self.prefix), "UTF-8"),
)
self._patch_binfile(
self.qmake_path,
key=b"qt_hpfxpath=",
newpath=bytes(str(self.prefix), "UTF-8"),
)
def patch_qmake_script(self, base_dir, qt_version, os_name): def patch_qmake_script(self, base_dir, qt_version, os_name):
if os_name == "linux": if os_name == "linux":