Coverage for /pythoncovmergedfiles/medio/medio/src/Pillow/Tests/oss-fuzz/fuzzers.py: 11%
27 statements
« prev ^ index » next coverage.py v7.3.2, created at 2023-10-27 06:38 +0000
« prev ^ index » next coverage.py v7.3.2, created at 2023-10-27 06:38 +0000
1import io
2import warnings
4from PIL import Image, ImageDraw, ImageFile, ImageFilter, ImageFont
7def enable_decompressionbomb_error():
8 ImageFile.LOAD_TRUNCATED_IMAGES = True
9 warnings.filterwarnings("ignore")
10 warnings.simplefilter("error", Image.DecompressionBombWarning)
13def disable_decompressionbomb_error():
14 ImageFile.LOAD_TRUNCATED_IMAGES = False
15 warnings.resetwarnings()
18def fuzz_image(data):
19 # This will fail on some images in the corpus, as we have many
20 # invalid images in the test suite.
21 with Image.open(io.BytesIO(data)) as im:
22 im.rotate(45)
23 im.filter(ImageFilter.DETAIL)
24 im.save(io.BytesIO(), "BMP")
27def fuzz_font(data):
28 wrapper = io.BytesIO(data)
29 try:
30 font = ImageFont.truetype(wrapper)
31 except OSError:
32 # Catch pcf/pilfonts/random garbage here. They return
33 # different font objects.
34 return
36 font.getbbox("ABC")
37 font.getmask("test text")
38 with Image.new(mode="RGBA", size=(200, 200)) as im:
39 draw = ImageDraw.Draw(im)
40 draw.multiline_textbbox((10, 10), "ABC\nAaaa", font, stroke_width=2)
41 draw.text((10, 10), "Test Text", font=font, fill="#000")