2
0
Эх сурвалжийг харах

Fix ICONDIR buffer overflow

Patrick Dawson 2 жил өмнө
parent
commit
ffa39db847

+ 1 - 1
platform/windows/display_server_windows.cpp

@@ -1892,7 +1892,7 @@ void DisplayServerWindows::set_native_icon(const String &p_filename) {
 	pos += sizeof(WORD);
 	pos += sizeof(WORD);
 	f->seek(pos);
 	f->seek(pos);
 
 
-	icon_dir = (ICONDIR *)memrealloc(icon_dir, 3 * sizeof(WORD) + icon_dir->idCount * sizeof(ICONDIRENTRY));
+	icon_dir = (ICONDIR *)memrealloc(icon_dir, sizeof(ICONDIR) - sizeof(ICONDIRENTRY) + icon_dir->idCount * sizeof(ICONDIRENTRY));
 	f->get_buffer((uint8_t *)&icon_dir->idEntries[0], icon_dir->idCount * sizeof(ICONDIRENTRY));
 	f->get_buffer((uint8_t *)&icon_dir->idEntries[0], icon_dir->idCount * sizeof(ICONDIRENTRY));
 
 
 	int small_icon_index = -1; // Select 16x16 with largest color count.
 	int small_icon_index = -1; // Select 16x16 with largest color count.