[glib] Fix g_hash_table_foreach crash with NULL hash table
- From: Christophe Fergeau <teuf src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] Fix g_hash_table_foreach crash with NULL hash table
- Date: Fri, 10 Feb 2012 09:06:02 +0000 (UTC)
commit 6d3b31a533d74b727bca5ac720a81eacb8aee31e
Author: Christophe Fergeau <cfergeau redhat com>
Date: Thu Feb 9 17:59:55 2012 +0100
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.
glib/ghash.c | 12 ++++++++++--
1 files changed, 10 insertions(+), 2 deletions(-)
---
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++)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]