From: Christophe Fergeau Date: Thu, 9 Feb 2012 16:59:55 +0000 (+0100) Subject: Fix g_hash_table_foreach crash with NULL hash table X-Git-Tag: 2.31.18~64 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6d3b31a533d74b727bca5ac720a81eacb8aee31e;p=platform%2Fupstream%2Fglib.git 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. --- diff --git a/glib/ghash.c b/glib/ghash.c index b058d17..e204a40 100644 --- a/glib/ghash.c +++ b/glib/ghash.c @@ -1504,12 +1504,16 @@ g_hash_table_foreach (GHashTable *hash_table, { gint i; #ifndef G_DISABLE_ASSERT - gint version = hash_table->version; + gint version; #endif g_return_if_fail (hash_table != NULL); g_return_if_fail (func != NULL); +#ifndef G_DISABLE_ASSERT + version = hash_table->version; +#endif + for (i = 0; i < hash_table->size; i++) { guint node_hash = hash_table->hashes[i]; @@ -1558,13 +1562,17 @@ g_hash_table_find (GHashTable *hash_table, { gint i; #ifndef G_DISABLE_ASSERT - gint version = hash_table->version; + gint version; #endif gboolean match; g_return_val_if_fail (hash_table != NULL, NULL); g_return_val_if_fail (predicate != NULL, NULL); +#ifndef G_DISABLE_ASSERT + version = hash_table->version; +#endif + match = FALSE; for (i = 0; i < hash_table->size; i++)