dwrite: Fix stretch value validation in CreateTextFormat().

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
This commit is contained in:
Nikolay Sivov 2022-08-03 13:41:35 +03:00 committed by Alexandre Julliard
parent 27cdb54bd8
commit 2dd903885b
2 changed files with 11 additions and 4 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright 2012, 2014-2021 Nikolay Sivov for CodeWeavers
* Copyright 2012, 2014-2022 Nikolay Sivov for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -723,10 +723,13 @@ HRESULT create_text_format(const WCHAR *family_name, IDWriteFontCollection *coll
if (size <= 0.0f)
return E_INVALIDARG;
if (((UINT32)weight > DWRITE_FONT_WEIGHT_ULTRA_BLACK) ||
((UINT32)stretch > DWRITE_FONT_STRETCH_ULTRA_EXPANDED) ||
((UINT32)style > DWRITE_FONT_STYLE_ITALIC))
if ((UINT32)weight > DWRITE_FONT_WEIGHT_ULTRA_BLACK
|| stretch == DWRITE_FONT_STRETCH_UNDEFINED
|| (UINT32)stretch > DWRITE_FONT_STRETCH_ULTRA_EXPANDED
|| (UINT32)style > DWRITE_FONT_STYLE_ITALIC)
{
return E_INVALIDARG;
}
if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY;

View file

@ -1196,6 +1196,10 @@ static void test_CreateTextFormat(void)
10, 10.0f, L"en-us", &format);
ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
hr = IDWriteFactory_CreateTextFormat(factory, L"Tahoma", NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_ITALIC,
DWRITE_FONT_STRETCH_UNDEFINED, 10.0f, L"en-us", &format);
ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
/* empty family name */
hr = IDWriteFactory_CreateTextFormat(factory, L"", NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL,
DWRITE_FONT_STRETCH_NORMAL, 10.0f, L"en-us", &format);