From edd718d258306d16e2142f9cf0b9955871f137e2 Mon Sep 17 00:00:00 2001 From: James Zhang Date: Wed, 4 Jul 2012 10:00:23 -0400 Subject: [PATCH 1/2] ss7: fix a wired crash on remind ticket 4972 - change dynamic memory allocation/deallocation to char array --- .../src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c index 2f4c18d4c3..8c5c221e0e 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c @@ -643,7 +643,7 @@ ftdm_status_t copy_redirgInfo_to_sngss7(ftdm_channel_t *ftdmchan, SiRedirInfo *r ftdm_status_t copy_access_transport_from_sngss7(ftdm_channel_t *ftdmchan, SiAccTrnspt *accTrnspt) { - char *val=NULL; + char val[(MF_SIZE_TKNSTRE + 7) & 0xff8]; sngss7_chan_data_t *sngss7_info = ftdmchan->call_data; if (accTrnspt->eh.pres != PRSNT_NODEF || accTrnspt->infoElmts.pres !=PRSNT_NODEF) { @@ -651,10 +651,8 @@ ftdm_status_t copy_access_transport_from_sngss7(ftdm_channel_t *ftdmchan, SiAccT return FTDM_SUCCESS; } - val = ftdm_malloc(3*accTrnspt->infoElmts.len); ftdm_url_encode((const char*)accTrnspt->infoElmts.val, val, accTrnspt->infoElmts.len); sngss7_add_var (sngss7_info, "ss7_access_transport_urlenc", val); - ftdm_safe_free(val); return FTDM_SUCCESS; } From 64f33c25da177ce225ff3b24c23fffad97e126fd Mon Sep 17 00:00:00 2001 From: James Zhang Date: Wed, 4 Jul 2012 10:09:19 -0400 Subject: [PATCH 2/2] ss7: fix on last fix, make enough memory for bad encode cases --- .../src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c index 8c5c221e0e..c47b580ef6 100644 --- a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c +++ b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c @@ -643,7 +643,7 @@ ftdm_status_t copy_redirgInfo_to_sngss7(ftdm_channel_t *ftdmchan, SiRedirInfo *r ftdm_status_t copy_access_transport_from_sngss7(ftdm_channel_t *ftdmchan, SiAccTrnspt *accTrnspt) { - char val[(MF_SIZE_TKNSTRE + 7) & 0xff8]; + char val[3*((MF_SIZE_TKNSTRE + 7) & 0xff8)]; sngss7_chan_data_t *sngss7_info = ftdmchan->call_data; if (accTrnspt->eh.pres != PRSNT_NODEF || accTrnspt->infoElmts.pres !=PRSNT_NODEF) {