mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-14 05:16:18 +01:00
Fix g_hash_table_foreach crash with NULL hash table
When G_DISABLE_ASSERT is not defined, g_hash_table_foreach and g_hash_table_find dereferences the hash table argument before checking if it's NULL. This causes a crash when one of this function is mistakenly called with a NULL argument instead of returning with a warning through g_return_if_fail.
This commit is contained in:
parent
b17b135d9f
commit
6d3b31a533
12
glib/ghash.c
12
glib/ghash.c
@ -1504,12 +1504,16 @@ g_hash_table_foreach (GHashTable *hash_table,
|
|||||||
{
|
{
|
||||||
gint i;
|
gint i;
|
||||||
#ifndef G_DISABLE_ASSERT
|
#ifndef G_DISABLE_ASSERT
|
||||||
gint version = hash_table->version;
|
gint version;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
g_return_if_fail (hash_table != NULL);
|
g_return_if_fail (hash_table != NULL);
|
||||||
g_return_if_fail (func != NULL);
|
g_return_if_fail (func != NULL);
|
||||||
|
|
||||||
|
#ifndef G_DISABLE_ASSERT
|
||||||
|
version = hash_table->version;
|
||||||
|
#endif
|
||||||
|
|
||||||
for (i = 0; i < hash_table->size; i++)
|
for (i = 0; i < hash_table->size; i++)
|
||||||
{
|
{
|
||||||
guint node_hash = hash_table->hashes[i];
|
guint node_hash = hash_table->hashes[i];
|
||||||
@ -1558,13 +1562,17 @@ g_hash_table_find (GHashTable *hash_table,
|
|||||||
{
|
{
|
||||||
gint i;
|
gint i;
|
||||||
#ifndef G_DISABLE_ASSERT
|
#ifndef G_DISABLE_ASSERT
|
||||||
gint version = hash_table->version;
|
gint version;
|
||||||
#endif
|
#endif
|
||||||
gboolean match;
|
gboolean match;
|
||||||
|
|
||||||
g_return_val_if_fail (hash_table != NULL, NULL);
|
g_return_val_if_fail (hash_table != NULL, NULL);
|
||||||
g_return_val_if_fail (predicate != NULL, NULL);
|
g_return_val_if_fail (predicate != NULL, NULL);
|
||||||
|
|
||||||
|
#ifndef G_DISABLE_ASSERT
|
||||||
|
version = hash_table->version;
|
||||||
|
#endif
|
||||||
|
|
||||||
match = FALSE;
|
match = FALSE;
|
||||||
|
|
||||||
for (i = 0; i < hash_table->size; i++)
|
for (i = 0; i < hash_table->size; i++)
|
||||||
|
Loading…
Reference in New Issue
Block a user