Skip to content

Commit 04eee27

Browse files
author
aquanull
committed
Incomplete safety.
1 parent 0f94faf commit 04eee27

File tree

1 file changed

+26
-9
lines changed

1 file changed

+26
-9
lines changed

src/win32/Dialogs/ram_search.cpp

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -214,17 +214,34 @@ void ResetMemoryRegions()
214214

215215
if (nextVirtualIndex > MAX_RAM_SIZE)
216216
{
217-
s_prevValues = (unsigned char *)realloc(s_prevValues, sizeof(char) * (nextVirtualIndex + 4));
218-
memset(s_prevValues, 0, sizeof(char) * (nextVirtualIndex + 4));
217+
size_t size1 = sizeof(unsigned char) * (nextVirtualIndex + 4);
218+
size_t size2 = sizeof(unsigned char) * (nextVirtualIndex + 4);
219+
size_t size3 = sizeof(unsigned short) * (nextVirtualIndex + 4);
220+
size_t size4 = sizeof(MemoryRegion *) * (nextVirtualIndex + 4);
219221

220-
s_curValues = (unsigned char *)realloc(s_curValues, sizeof(char) * (nextVirtualIndex + 4));
221-
memset(s_curValues, 0, sizeof(char) * (nextVirtualIndex + 4));
222+
void *tmp1 = realloc(s_prevValues, size1);
223+
void *tmp2 = realloc(s_curValues, size2);
224+
void *tmp3 = realloc(s_numChanges, size3);
225+
void *tmp4 = realloc(s_itemIndexToRegionPointer, size4);
222226

223-
s_numChanges = (unsigned short *)realloc(s_numChanges, sizeof(short) * (nextVirtualIndex + 4));
224-
memset(s_numChanges, 0, sizeof(short) * (nextVirtualIndex + 4));
225-
226-
s_itemIndexToRegionPointer = (MemoryRegion * *)realloc(s_itemIndexToRegionPointer, sizeof(MemoryRegion *) * (nextVirtualIndex + 4));
227-
memset(s_itemIndexToRegionPointer, 0, sizeof(MemoryRegion *) * (nextVirtualIndex + 4));
227+
if (tmp1 && tmp2 && tmp3 && tmp4)
228+
{
229+
memset(tmp1, 0, size1);
230+
memset(tmp2, 0, size2);
231+
memset(tmp3, 0, size3);
232+
memset(tmp4, 0, size4);
233+
}
234+
else
235+
{
236+
free(s_prevValues);
237+
free(s_curValues);
238+
free(s_numChanges);
239+
free(s_itemIndexToRegionPointer);
240+
}
241+
s_prevValues = (unsigned char *)tmp1;
242+
s_curValues = (unsigned char *)tmp2;
243+
s_numChanges = (unsigned short *)tmp3;
244+
s_itemIndexToRegionPointer = (MemoryRegion **)tmp4;
228245

229246
MAX_RAM_SIZE = nextVirtualIndex;
230247
}

0 commit comments

Comments
 (0)