Skip to content
Snippets Groups Projects
  • David M. Lee's avatar
    aecd2429
    Fix XML encoding of 'identity display' in NOTIFY messages. · aecd2429
    David M. Lee authored
    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 ABE-2902)
    Reported by: Guenther Kelleter
    Tested by: Guenther Kelleter
    Review: http://reviewboard.digium.internal/r/365/
    
    ........
    
    Merged revision 378919 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier
    ........
    
    Merged revisions 378933 from http://svn.asterisk.org/svn/asterisk/branches/1.8
    ........
    
    Merged revisions 378934 from http://svn.asterisk.org/svn/asterisk/branches/11
    
    
    git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@378935 65c4cc65-6c06-0410-ace0-fbb531ad65f3
    aecd2429
    History
    Fix XML encoding of 'identity display' in NOTIFY messages.
    David M. Lee authored
    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 ABE-2902)
    Reported by: Guenther Kelleter
    Tested by: Guenther Kelleter
    Review: http://reviewboard.digium.internal/r/365/
    
    ........
    
    Merged revision 378919 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier
    ........
    
    Merged revisions 378933 from http://svn.asterisk.org/svn/asterisk/branches/1.8
    ........
    
    Merged revisions 378934 from http://svn.asterisk.org/svn/asterisk/branches/11
    
    
    git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@378935 65c4cc65-6c06-0410-ace0-fbb531ad65f3