diff --git a/src/modules/tsilo/tsilo.c b/src/modules/tsilo/tsilo.c index f622fdcd98d..f5b1732e898 100644 --- a/src/modules/tsilo/tsilo.c +++ b/src/modules/tsilo/tsilo.c @@ -250,15 +250,25 @@ static int fixup_ts_append(void** param, int param_no) */ static int w_ts_append(struct sip_msg* _msg, char *_table, char *_ruri) { - str ruri = {0}; + str tmp = STR_NULL; + str ruri = STR_NULL; + int rc; - if(_ruri==NULL || (fixup_get_svalue(_msg, (gparam_p)_ruri, &ruri)!=0 || ruri.len<=0)) { + if(_ruri==NULL || (fixup_get_svalue(_msg, (gparam_p)_ruri, &tmp)!=0 || tmp.len<=0)) { LM_ERR("invalid ruri parameter\n"); return -1; } - if(ts_check_uri(&ruri)<0) + if(ts_check_uri(&tmp)<0) return -1; - return ts_append(_msg, &ruri, _table); + + if (pkg_str_dup(&ruri, &tmp) < 0) + return -1; + + rc = ts_append(_msg, &ruri, _table); + + pkg_free(ruri.s); + + return rc; } /** *