Module: sip-router
Branch: 3.1
Commit: 18881421102eaac97c85d84cbbd1597c3f342d23
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=18881421102eaac97c85d84cbbd1597c3f342d23

Author: Marius Zbihlei <[email protected]>
Committer: Timo Reimann <[email protected]>
Date:   Wed Aug 17 15:00:00 2011 +0300

modules_k/dialog When hash_size was smaller then 1, consider this as a value(1 
== 2^0)

The 1<<(n-1) check for the power of two smaller than the given number doesn't 
work for n == 0 (undefined behavior),
so values of dlg_hash_size smaller than 1 where not checked correctly.
(cherry picked from commit 11033b05be673593a87afdc2a1d8a2c887fb9ab7)

---

 modules_k/dialog/dialog.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/modules_k/dialog/dialog.c b/modules_k/dialog/dialog.c
index 2c63d87..38a30b5 100644
--- a/modules_k/dialog/dialog.c
+++ b/modules_k/dialog/dialog.c
@@ -559,11 +559,18 @@ static int mod_init(void)
                return -1;
        }
 
+       /* sanitize dlg_hash_zie */
+       if (dlg_hash_size < 1){
+               LM_WARN("hash_size is smaller "
+                               "then 1  -> rounding from %d to 1\n",
+                               dlg_hash_size);
+               dlg_hash_size = 1;
+       }
        /* initialized the hash table */
        for( n=0 ; n<(8*sizeof(n)) ; n++) {
                if (dlg_hash_size==(1<<n))
                        break;
-               if (dlg_hash_size<(1<<n)) {
+               if (n && dlg_hash_size<(1<<n)) {
                        LM_WARN("hash_size is not a power "
                                "of 2 as it should be -> rounding from %d to 
%d\n",
                                dlg_hash_size, 1<<(n-1));


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to