compstui: Fix a possible out-of-bounds write (Coverity).
When len is 256, (ARRAY_SIZE(title) - len) is 0. When LoadStringW() is called with the last parameter being zero, a WCHAR string pointer is stored at 'title + 256', writing title out of bounds.
This commit is contained in:
parent
2b323dbad7
commit
6164432aa7
1 changed files with 8 additions and 4 deletions
|
@ -478,18 +478,22 @@ static LONG create_property_sheetW(struct propsheet *ps, PROPSHEETUI_INFO_HEADER
|
|||
(!header->titleW || !(header->flags & PSUIHDRF_EXACT_PTITLE)))
|
||||
{
|
||||
len = wcslen(title);
|
||||
if (len < ARRAY_SIZE(title))
|
||||
if (len < ARRAY_SIZE(title) - 1)
|
||||
{
|
||||
title[len++] = ' ';
|
||||
LoadStringW(compstui_hmod, IDS_CPSUI_DEFAULT, title + len, ARRAY_SIZE(title) - len);
|
||||
LoadStringW(compstui_hmod, IDS_CPSUI_DEFAULT, title + len, ARRAY_SIZE(title) - len);
|
||||
}
|
||||
}
|
||||
|
||||
if ((header->flags & PSUIHDRF_PROPTITLE) &&
|
||||
(!header->titleW || !(header->flags & PSUIHDRF_EXACT_PTITLE)))
|
||||
{
|
||||
len = wcslen(title);
|
||||
if (len < ARRAY_SIZE(title))
|
||||
if (len < ARRAY_SIZE(title) - 1)
|
||||
{
|
||||
title[len++] = ' ';
|
||||
LoadStringW(compstui_hmod, IDS_CPSUI_PROPERTIES, title + len, ARRAY_SIZE(title) - len);
|
||||
LoadStringW(compstui_hmod, IDS_CPSUI_PROPERTIES, title + len, ARRAY_SIZE(title) - len);
|
||||
}
|
||||
}
|
||||
|
||||
psh.nPages = ps->pages_cnt;
|
||||
|
|
Loading…
Add table
Reference in a new issue