28 May
2024
28 May
'24
9:07 p.m.
Zhiyi Zhang (@zhiyi) commented about dlls/win32u/sysparams.c:
if (query_reg_ascii_value( hkey, "ModeCount", value, sizeof(buffer) ) && value->Type == REG_DWORD) source->mode_count = *(const DWORD *)value->Data;
- /* Modes, allocate an extra mode for easier iteration */ - if ((source->modes = calloc( source->mode_count + 1, sizeof(DEVMODEW) ))) + /* Modes */ + size = offsetof( KEY_VALUE_PARTIAL_INFORMATION, Data[(source->mode_count + 1) * sizeof(*source->modes)] ); + if ((value = malloc( size )) && query_reg_ascii_value( hkey, "Modes", value, size ))
it’s unlikely but value leaks when the reg query fails. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/5579#note_69690