mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-27 22:46:15 +01:00
garray: add overflow checks before expanding array
We should bail when we detect that adding a number of items to an array would cause it to overflow. Since we can't change to using gsize for ABI reasons we should protect the integrity of the process even if that means crashing.
This commit is contained in:
parent
4e1488eebb
commit
0c7dc75844
@ -803,8 +803,14 @@ static void
|
||||
g_array_maybe_expand (GRealArray *array,
|
||||
guint len)
|
||||
{
|
||||
guint want_alloc = g_array_elt_len (array, array->len + len +
|
||||
array->zero_terminated);
|
||||
guint want_alloc;
|
||||
|
||||
/* Detect potential overflow */
|
||||
if G_UNLIKELY ((G_MAXUINT - array->len) < len)
|
||||
g_error ("adding %u to array would overflow", len);
|
||||
|
||||
want_alloc = g_array_elt_len (array, array->len + len +
|
||||
array->zero_terminated);
|
||||
|
||||
if (want_alloc > array->alloc)
|
||||
{
|
||||
@ -1162,6 +1168,10 @@ static void
|
||||
g_ptr_array_maybe_expand (GRealPtrArray *array,
|
||||
gint len)
|
||||
{
|
||||
/* Detect potential overflow */
|
||||
if G_UNLIKELY ((G_MAXUINT - array->len) < len)
|
||||
g_error ("adding %u to array would overflow", len);
|
||||
|
||||
if ((array->len + len) > array->alloc)
|
||||
{
|
||||
guint old_alloc = array->alloc;
|
||||
|
Loading…
Reference in New Issue
Block a user