]> git.ipfire.org Git - thirdparty/asterisk.git/commit
Fix XML encoding of 'identity display' in NOTIFY messages.
authorMatthew Jordan <mjordan@digium.com>
Tue, 9 Jul 2013 11:33:02 +0000 (11:33 +0000)
committerMatthew Jordan <mjordan@digium.com>
Tue, 9 Jul 2013 11:33:02 +0000 (11:33 +0000)
commitb472a3e6db488d2058aaf12f5acf4e4fa6f6b4cb
treee242dfd937f9d89bbc85de7150307c4fa4381bb5
parentdd35cf64d7d14d2c655fd1ec06191b0c056421a9
Fix XML encoding of 'identity display' in NOTIFY messages.

XML encoding in chan_sip is accomplished by naively building the XML
directly from strings. While this usually works, it fails to take into
account escaping the reserved characters in XML.

This patch adds an 'ast_xml_escape' function, which works similarly to
'ast_uri_encode'. This is used to properly escape the local_display
attribute in XML formatted NOTIFY messages.

Several things to note:
 * The Right Thing(TM) to do would probably be to replace the
   ast_build_string stuff with building an ast_xml_doc. That's a much
   bigger change, and out of scope for the original ticket, so I
   refrained myself.
 * It is with great sadness that I wrote my own ast_xml_escape
   function. There's one in libxml2, but it's knee-deep in
   libxml2-ness, and not easily used to one-off escape a
   string.
 * I only escaped the string we know is causing problems
   (local_display). At least some of the other strings are
   URI-encoded, which should be XML safe. Rather than figuring out
   what's safe and escaping what's not, it would be much cleaner to
   simply build an ast_xml_doc for the messages and let the XML
   library do the XML escaping. Like I said, that's out of scope.

(closes issue AST-1171)
Reported by: Guenther Kelleter
Tested by: Guenther Kelleter
Review: http://reviewboard.digium.internal/r/365/

git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/11.2@393879 65c4cc65-6c06-0410-ace0-fbb531ad65f3
channels/chan_sip.c
include/asterisk/utils.h
main/utils.c
tests/test_xml_escape.c [new file with mode: 0644]