From: David M. Lee Date: Mon, 14 Jan 2013 15:17:44 +0000 (+0000) Subject: Fix XML encoding of 'identity display' in NOTIFY messages, continued. X-Git-Tag: certified/1.8.15-cert2~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f22fb92bca5f2726cd5a4cc0af55a938d5eef42f;p=thirdparty%2Fasterisk.git Fix XML encoding of 'identity display' in NOTIFY messages, continued. When r378933 was merged into 1.8, it should have also escaped remote_display, since it will have the same XML encoding problem when the caller/callee roles are reversed. (closes issue ABE-2902) Reported by: Guenther Kelleter ........ Merged revisions 379001 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@379002 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 5b071350f1..094aef24e1 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -12850,8 +12850,8 @@ static void state_notify_build_xml(struct state_notify_data *data, int full, con if ((data->state & AST_EXTENSION_RINGING) && sip_cfg.notifyringing) { /* Twice the extension length should be enough for XML encoding */ char local_display[AST_MAX_EXTENSION * 2]; + char remote_display[AST_MAX_EXTENSION * 2]; char *local_target = ast_strdupa(mto); - const char *remote_display = exten; /* It may seem odd to base the remote_target on the To header here, * but testing by reporters on issue ASTERISK-16735 found that basing * on the From header would cause ringing state hints to not work @@ -12863,6 +12863,7 @@ static void state_notify_build_xml(struct state_notify_data *data, int full, con char *remote_target = ast_strdupa(mto); ast_xml_escape(exten, local_display, sizeof(local_display)); + ast_xml_escape(exten, remote_display, sizeof(remote_display)); /* There are some limitations to how this works. The primary one is that the callee must be dialing the same extension that is being monitored. Simply dialing @@ -12882,8 +12883,9 @@ static void state_notify_build_xml(struct state_notify_data *data, int full, con remote_target = alloca(need); snprintf(remote_target, need, "sip:%s@%s", cid_num, p->fromdomain); - remote_display = ast_strdupa(S_COR(caller->caller.id.name.valid, - caller->caller.id.name.str, "")); + ast_xml_escape(S_COR(caller->caller.id.name.valid, + caller->caller.id.name.str, ""), + remote_display, sizeof(remote_display)); connected_num = S_COR(caller->connected.id.number.valid, caller->connected.id.number.str, "");