Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions Charon/filetypes/OpenPackagingConvention.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def openStream(self, stream: IO[bytes], mime: str = "application/x-opc",
mode: OpenMode = OpenMode.ReadOnly) -> None:
self._mode = mode
self._stream = stream # A copy in case we need to rewind for toByteArray. We should mostly be reading via self._zipfile.
self._zipfile = zipfile.ZipFile(self._stream, self._mode.value, compression=zipfile.ZIP_DEFLATED)
self._zipfile = zipfile.ZipFile(self._stream, self._mode.value, compression=zipfile.ZIP_DEFLATED, allowZip64=True)

self._readContentTypes() # Load or create the content types element.
self._readRels() # Load or create the relations.
Expand Down Expand Up @@ -211,7 +211,7 @@ def toByteArray(self, offset: int = 0, count: int = -1) -> bytes:
self._stream.seek(offset)
result = self._stream.read(count)

self._zipfile = zipfile.ZipFile(self._stream, self._mode.value, compression=zipfile.ZIP_DEFLATED)
self._zipfile = zipfile.ZipFile(self._stream, self._mode.value, compression=zipfile.ZIP_DEFLATED, allowZip64=True)
return result

## Adds a new content type to the archive.
Expand Down Expand Up @@ -350,8 +350,10 @@ def _resizeImage(self, virtual_path: str, width: int, height: int) -> IO[bytes]:
def _readRels(self) -> None:
assert self._zipfile is not None

self._relations[""] = ET.Element("Relationships",
xmlns="http://schemas.openxmlformats.org/package/2006/relationships") # There must always be a global relationships document.
self._relations[""] = ET.Element(
"Relationships",
xmlns="http://schemas.openxmlformats.org/package/2006/relationships"
) # There must always be a global relationships document.

# Below is some parsing of paths and extensions.
# Normally you'd use os.path for this. But this is platform-dependent.
Expand Down Expand Up @@ -412,8 +414,10 @@ def _readContentTypes(self) -> None:
if content_types_element:
self._content_types_element = content_types_element
if not self._content_types_element:
self._content_types_element = ET.Element("Types",
xmlns="http://schemas.openxmlformats.org/package/2006/content-types")
self._content_types_element = ET.Element(
"Types",
xmlns="http://schemas.openxmlformats.org/package/2006/content-types"
)
# If there is no type for the .rels file, create it.
if self._mode != OpenMode.ReadOnly:
for type_element in self._content_types_element.iterfind(
Expand Down
Loading