]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Prevent double uri_escaping in chan_sip when pedantic is enabled
authorKinsey Moore <kmoore@digium.com>
Thu, 12 Jul 2012 18:55:17 +0000 (18:55 +0000)
committerKinsey Moore <kmoore@digium.com>
Thu, 12 Jul 2012 18:55:17 +0000 (18:55 +0000)
If pedantic mode is enabled, outbound invites will have double-escaped
contacts.  This avoids setting an already-escaped string into a field
where it is expected to be unescaped.

(closes issue ASTERISK-20023)
Reported by: Walter Doekes
........

Merged revisions 369993 from http://svn.asterisk.org/svn/asterisk/branches/1.8

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@369994 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 5a2df11efc43476551cd81822e5019ca5dc48775..61c5c63afa48d7ae709b93189eb9ef8ff4f43eb9 100644 (file)
@@ -12422,18 +12422,18 @@ static void initreqprep(struct sip_request *req, struct sip_pvt *p, int sipmetho
        else /* Save for any further attempts */
                ast_string_field_set(p, fromname, n);
 
+       ast_copy_string(tmp_l, l, sizeof(tmp_l));
        if (sip_cfg.pedanticsipchecking) {
                ast_escape_quoted(n, tmp_n, sizeof(tmp_n));
                n = tmp_n;
                ast_uri_encode(l, tmp_l, sizeof(tmp_l), ast_uri_sip_user);
-               l = tmp_l;
        }
 
        ourport = (p->fromdomainport) ? p->fromdomainport : ast_sockaddr_port(&p->ourip);
        if (!sip_standard_port(p->socket.type, ourport)) {
-               snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s:%d>;tag=%s", n, l, d, ourport, p->tag);
+               snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s:%d>;tag=%s", n, tmp_l, d, ourport, p->tag);
        } else {
-               snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s>;tag=%s", n, l, d, p->tag);
+               snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s>;tag=%s", n, tmp_l, d, p->tag);
        }
 
        if (!ast_strlen_zero(explicit_uri)) {