mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-13 18:56:17 +03:00
Fix null pointer dereference crash with malformed font
This commit is contained in:
parent
7f1708415c
commit
87d1770c18
10
Tests/fonts/fuzz_font-5203009437302784
Normal file
10
Tests/fonts/fuzz_font-5203009437302784
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
STARTFONT
|
||||||
|
FONT ÿ
|
||||||
|
SIZE 10
|
||||||
|
FONTBOUNDINGBOX
|
||||||
|
CHARS
|
||||||
|
STARTCHAR
|
||||||
|
ENCODING
|
||||||
|
BBX 2 5
|
||||||
|
ENDCHAR
|
||||||
|
ENDFONT
|
21
Tests/test_font_crash.py
Normal file
21
Tests/test_font_crash.py
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
from PIL import Image, ImageDraw, ImageFont
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from .helper import skip_unless_feature
|
||||||
|
|
||||||
|
class TestFontCrash:
|
||||||
|
def _fuzz_font(self, font):
|
||||||
|
# from fuzzers.fuzz_font
|
||||||
|
font.getbbox("ABC")
|
||||||
|
font.getmask("test text")
|
||||||
|
with Image.new(mode="RGBA", size=(200, 200)) as im:
|
||||||
|
draw = ImageDraw.Draw(im)
|
||||||
|
draw.multiline_textbbox((10, 10), "ABC\nAaaa", font, stroke_width=2)
|
||||||
|
draw.text((10, 10), "Test Text", font=font, fill="#000")
|
||||||
|
|
||||||
|
@skip_unless_feature("freetype2")
|
||||||
|
def test_segfault(self):
|
||||||
|
with pytest.raises(OSError):
|
||||||
|
font= ImageFont.truetype('Tests/fonts/fuzz_font-5203009437302784')
|
||||||
|
self._fuzz_font(font)
|
|
@ -921,6 +921,12 @@ font_render(FontObject *self, PyObject *args) {
|
||||||
yy = -(py + glyph_slot->bitmap_top);
|
yy = -(py + glyph_slot->bitmap_top);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Null buffer, is dereferenced in FT_Bitmap_Convert
|
||||||
|
if (!bitmap.buffer && bitmap.rows) {
|
||||||
|
return geterror(0x9D); // Bitmap missing
|
||||||
|
goto glyph_error;
|
||||||
|
}
|
||||||
|
|
||||||
/* convert non-8bpp bitmaps */
|
/* convert non-8bpp bitmaps */
|
||||||
switch (bitmap.pixel_mode) {
|
switch (bitmap.pixel_mode) {
|
||||||
case FT_PIXEL_MODE_MONO:
|
case FT_PIXEL_MODE_MONO:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user