From: Russell Bryant Date: Mon, 28 Jan 2008 18:38:56 +0000 (+0000) Subject: Merged revisions 100629 via svnmerge from X-Git-Tag: 1.6.0-beta2~2^2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b437d33fe54073965d4411275bf32439dbf40e30;p=thirdparty%2Fasterisk.git Merged revisions 100629 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r100629 | russell | 2008-01-28 12:34:20 -0600 (Mon, 28 Jan 2008) | 5 lines For some reason, the use of this strdupa() is leading to memory corruption on freebsd sparc64. This trivial workaround fixes it. (closes issue #10300, closes issue #11857, reported by mattias04 and Home-of-the-Brave) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@100630 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 159e194f9e..b13759e210 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -9445,9 +9445,10 @@ static int set_address_from_contact(struct sip_pvt *pvt) struct ast_hostent ahp; int port; char *host, *pt; + char contact_buf[256]; + char contact2_buf[256]; char *contact, *contact2; - if (ast_test_flag(&pvt->flags[0], SIP_NAT_ROUTE)) { /* NAT: Don't trust the contact field. Just use what they came to us with. */ @@ -9455,10 +9456,12 @@ static int set_address_from_contact(struct sip_pvt *pvt) return 0; } - /* Work on a copy */ - contact = ast_strdupa(pvt->fullcontact); - contact2 = ast_strdupa(pvt->fullcontact); + ast_copy_string(contact_buf, pvt->fullcontact, sizeof(contact_buf)); + ast_copy_string(contact2_buf, pvt->fullcontact, sizeof(contact2_buf)); + contact = contact_buf; + contact2 = contact2_buf; + /* We have only the part in here so we just need to parse a SIP URI.*/ if (pvt->socket.type == SIP_TRANSPORT_TLS) {