[sr-dev] git:kamailio_3.0: lib/srdb1 The RES_ROW(res) was not checked to be NULL before being used

Marius Zbihlei marius.zbihlei at 1and1.ro
Tue Apr 27 14:52:50 CEST 2010


Module: sip-router
Branch: kamailio_3.0
Commit: 79352b61841907f08bf7ca994acf814b2a5a6615
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=79352b61841907f08bf7ca994acf814b2a5a6615

Author: Marius Zbihlei <marius.zbihlei at 1and1.ro>
Committer: Marius Zbihlei <marius.zbihlei at 1and1.ro>
Date:   Tue Apr 27 15:40:10 2010 +0300

lib/srdb1 The RES_ROW(res) was not checked to be NULL before being used

This caused a crash in the case that RES_ROW_N(res) was > 0, and RES_ROW was NULL
(like a pkg_malloc going bad in a OOM scenario).

---

 lib/srdb1/db_res.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/lib/srdb1/db_res.c b/lib/srdb1/db_res.c
index 3581021..8d2146e 100644
--- a/lib/srdb1/db_res.c
+++ b/lib/srdb1/db_res.c
@@ -49,10 +49,12 @@ inline int db_free_rows(db1_res_t* _r)
 		LM_ERR("invalid parameter value\n");
 		return -1;
 	}
-	LM_DBG("freeing %d rows\n", RES_ROW_N(_r));
 
-	for(i = 0; i < RES_ROW_N(_r); i++) {
-		db_free_row(&(RES_ROWS(_r)[i]));
+	if(RES_ROWS(_r)){
+		LM_DBG("freeing %d rows\n", RES_ROW_N(_r));
+		for(i = 0; i < RES_ROW_N(_r); i++) {
+			db_free_row(&(RES_ROWS(_r)[i]));
+		}
 	}
 	RES_ROW_N(_r) = 0;
 




More information about the sr-dev mailing list