Skip to content
Merged
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
26 changes: 24 additions & 2 deletions packages/markitdown/src/markitdown/converters/_exiftool.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import json
import subprocess
import locale
from typing import BinaryIO, Any, Union
import subprocess
from typing import Any, BinaryIO, Union


def _parse_version(version: str) -> tuple:
return tuple(map(int, (version.split("."))))


def exiftool_metadata(
Expand All @@ -13,6 +17,24 @@ def exiftool_metadata(
if not exiftool_path:
return {}

# Verify exiftool version
try:
version_output = subprocess.run(
[exiftool_path, "-ver"],
capture_output=True,
text=True,
check=True,
).stdout.strip()
version = _parse_version(version_output)
min_version = (12, 24)
if version < min_version:
raise RuntimeError(
f"ExifTool version {version_output} is vulnerable to CVE-2021-22204. "
"Please upgrade to version 12.24 or later."
)
except (subprocess.CalledProcessError, ValueError) as e:
raise RuntimeError("Failed to verify ExifTool version.") from e
Comment thread
t3tra-dev marked this conversation as resolved.

# Run exiftool
cur_pos = file_stream.tell()
try:
Expand Down