Commit 2dd90388 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

dwrite: Fix stretch value validation in CreateTextFormat().

parent 27cdb54b
/* /*
* 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 * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * 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 ...@@ -723,10 +723,13 @@ HRESULT create_text_format(const WCHAR *family_name, IDWriteFontCollection *coll
if (size <= 0.0f) if (size <= 0.0f)
return E_INVALIDARG; return E_INVALIDARG;
if (((UINT32)weight > DWRITE_FONT_WEIGHT_ULTRA_BLACK) || if ((UINT32)weight > DWRITE_FONT_WEIGHT_ULTRA_BLACK
((UINT32)stretch > DWRITE_FONT_STRETCH_ULTRA_EXPANDED) || || stretch == DWRITE_FONT_STRETCH_UNDEFINED
((UINT32)style > DWRITE_FONT_STYLE_ITALIC)) || (UINT32)stretch > DWRITE_FONT_STRETCH_ULTRA_EXPANDED
|| (UINT32)style > DWRITE_FONT_STYLE_ITALIC)
{
return E_INVALIDARG; return E_INVALIDARG;
}
if (!(object = calloc(1, sizeof(*object)))) if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY; return E_OUTOFMEMORY;
......
...@@ -1196,6 +1196,10 @@ static void test_CreateTextFormat(void) ...@@ -1196,6 +1196,10 @@ static void test_CreateTextFormat(void)
10, 10.0f, L"en-us", &format); 10, 10.0f, L"en-us", &format);
ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); 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 */ /* empty family name */
hr = IDWriteFactory_CreateTextFormat(factory, L"", NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, hr = IDWriteFactory_CreateTextFormat(factory, L"", NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL,
DWRITE_FONT_STRETCH_NORMAL, 10.0f, L"en-us", &format); DWRITE_FONT_STRETCH_NORMAL, 10.0f, L"en-us", &format);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment