python-pillow/backport-CVE-2020-35653.patch
2021-01-28 21:55:56 +08:00

48 lines
1.6 KiB
Diff

From fb7637359d2dce692392a94ba27dc98466ef7d09 Mon Sep 17 00:00:00 2001
From: renmingshuai <eric-github@soroos.net>
Date: Thu, 28 Jan 2021 20:35:50 +0800
Subject: [PATCH] Fix for CVE-2020-35655 - Read Overflow in PCX Decoding.
commit 2f409261eb1228e166868f0b5da5cda52e55bf upstream
* Don't trust the image to specify a buffer size
Conflict:NA
Reference:https://github.com/python-pillow/Pillow/commit/2f409261eb1228e166868f8f0b5da5cda52e55bf
---
src/PIL/PcxImagePlugin.py | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/PIL/PcxImagePlugin.py b/src/PIL/PcxImagePlugin.py
index f7ae3bf..e77867e 100644
--- a/src/PIL/PcxImagePlugin.py
+++ b/src/PIL/PcxImagePlugin.py
@@ -64,13 +64,13 @@ class PcxImageFile(ImageFile.ImageFile):
version = i8(s[1])
bits = i8(s[3])
planes = i8(s[65])
- stride = i16(s, 66)
+ ignored_stride = i16(s, 66)
logger.debug(
"PCX version %s, bits %s, planes %s, stride %s",
version,
bits,
planes,
- stride,
+ ignored_stride,
)
self.info["dpi"] = i16(s, 12), i16(s, 14)
@@ -107,6 +107,11 @@ class PcxImageFile(ImageFile.ImageFile):
self.mode = mode
self._size = bbox[2] - bbox[0], bbox[3] - bbox[1]
+
+ # don't trust the passed in stride. Calculate for ourselves.
+ # CVE-2020-35655
+ stride = (self._size[0] * bits + 7) // 8
+ stride += stride % 2
bbox = (0, 0) + self.size
logger.debug("size: %sx%s", *self.size)
--
1.8.3.1