Pushed in master and branch-2.5.

        * src/muscle-tab.c (muscle_insert, muscle_grow)
        * src/state.c (state_hash_insert): Check the return value of
        hash_insert.


From 04d1e39dd35c7a5c9e7b12c12a7afbedee71ea96 Mon Sep 17 00:00:00 2001
From: Akim Demaille <[email protected]>
Date: Thu, 11 Jun 2009 14:42:12 +0200
Subject: [PATCH 2/4] hash: check insertion for memory exhaustion.

        * src/muscle-tab.c (muscle_insert, muscle_grow)
        * src/state.c (state_hash_insert): Check the return value of
        hash_insert.
---
 ChangeLog        |    7 +++++++
 src/muscle-tab.c |    6 ++++--
 src/state.c      |    3 ++-
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 9871ea1..44db35c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2009-06-11  Akim Demaille  <[email protected]>
 
+       hash: check insertion for memory exhaustion.
+       * src/muscle-tab.c (muscle_insert, muscle_grow)
+       * src/state.c (state_hash_insert): Check the return value of
+       hash_insert.
+
+2009-06-11  Akim Demaille  <[email protected]>
+
        tests: honor TESTSUITEFLAGS in every check target.
        * tests/local.mk (RUN_TESTSUITE): New.
        (check-local, installcheck-local, maintainer-check-g++)
diff --git a/src/muscle-tab.c b/src/muscle-tab.c
index c410a55..c78e3f8 100644
--- a/src/muscle-tab.c
+++ b/src/muscle-tab.c
@@ -120,7 +120,8 @@ muscle_insert (char const *key, char const *value)
       /* First insertion in the hash. */
       entry = xmalloc (sizeof *entry);
       entry->key = key;
-      hash_insert (muscle_table, entry);
+      if (!hash_insert (muscle_table, entry))
+        xalloc_die ();
     }
   else
     free (entry->storage);
@@ -149,7 +150,8 @@ muscle_grow (const char *key, const char *val, const char 
*separator)
       /* First insertion in the hash. */
       entry = xmalloc (sizeof *entry);
       entry->key = key;
-      hash_insert (muscle_table, entry);
+      if (!hash_insert (muscle_table, entry))
+        xalloc_die ();
       entry->value = entry->storage = xstrdup (val);
     }
   else
diff --git a/src/state.c b/src/state.c
index a0f5cdb..b5cd6a3 100644
--- a/src/state.c
+++ b/src/state.c
@@ -379,7 +379,8 @@ state_hash_free (void)
 void
 state_hash_insert (state *s)
 {
-  hash_insert (state_table, s);
+  if (!hash_insert (state_table, s))
+    xalloc_die ();
 }
 
 
-- 
1.6.3.2

Reply via email to