fix: add O_BINARY flag to os.open for Windows attachment writes
Fixes #494 - Windows attachment corruption for PNG/PDF files. On Windows, os.open() defaults to text mode, which translates LF (0x0a) bytes to CRLF (0x0d 0x0a) during os.write(). This corrupts any binary attachment containing 0x0a bytes (PNG headers, PDFs, etc.). The fix adds os.O_BINARY to the os.open() flags using the standard getattr(os, 'O_BINARY', 0) idiom, which returns the flag on Windows and 0 (no-op) on platforms where it doesn't exist. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -102,7 +102,7 @@ class AttachmentStorage:
|
||||
# Save file with restrictive permissions (sensitive email/drive content)
|
||||
file_path = STORAGE_DIR / save_name
|
||||
try:
|
||||
fd = os.open(file_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600)
|
||||
fd = os.open(file_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC | getattr(os, 'O_BINARY', 0), 0o600)
|
||||
try:
|
||||
total_written = 0
|
||||
data_len = len(file_bytes)
|
||||
|
||||
Reference in New Issue
Block a user