[sr-dev] git:master: tm: safety check to be sure t_release() is executed in request_route

Daniel-Constantin Mierla miconda at gmail.com
Fri Dec 2 12:01:10 CET 2011


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

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date:   Fri Dec  2 11:55:28 2011 +0100

tm: safety check to be sure t_release() is executed in request_route

- t_release() is intended for request_route block, but can be executed
  from other types of root routing block via subroute, causing a crash
- the fix ensures the root routing block is request_route
- reported by Jose Luis Millan, closes FS#184

---

 modules/tm/tm.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/modules/tm/tm.c b/modules/tm/tm.c
index 5e06470..20167bb 100644
--- a/modules/tm/tm.c
+++ b/modules/tm/tm.c
@@ -1286,6 +1286,12 @@ inline static int w_t_release(struct sip_msg* msg, char* str, char* str2)
 	struct cell *t;
 	int ret;
 	
+	if(get_route_type()!=REQUEST_ROUTE)
+	{
+		LM_INFO("invalid usage - not in request route\n");
+		return -1;
+	}
+
 	if (t_check( msg  , 0  )==-1) return -1;
 	t=get_t();
 	if ( t && t!=T_UNDEFINED ) {




More information about the sr-dev mailing list