From 97ebde15f373555da8309c7ebe657a2492b818b6 Mon Sep 17 00:00:00 2001 From: Riza Sulistyo Date: Tue, 10 Jun 2014 02:56:56 +0000 Subject: Re #1770: Fixed issue with "other params" quotes when proxying WWW-authenticate header. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4859 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsip/sip_auth_parser.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/pjsip/src/pjsip/sip_auth_parser.c b/pjsip/src/pjsip/sip_auth_parser.c index 4708dc63..b5c60302 100644 --- a/pjsip/src/pjsip/sip_auth_parser.c +++ b/pjsip/src/pjsip/sip_auth_parser.c @@ -137,22 +137,29 @@ static void parse_digest_challenge( pj_scanner *scanner, pj_pool_t *pool, pj_list_init(&chal->other_param); for (;;) { - pj_str_t name, value; + pj_str_t name, value, unquoted_value; - pjsip_parse_param_imp(scanner, pool, &name, &value, - PJSIP_PARSE_REMOVE_QUOTE); + pjsip_parse_param_imp(scanner, pool, &name, &value, 0); + + if (value.ptr && (value.ptr[0] == '"')) { + unquoted_value.ptr = value.ptr + 1; + unquoted_value.slen = value.slen - 2; + } else { + unquoted_value.ptr = value.ptr; + unquoted_value.slen = value.slen; + } if (!pj_stricmp(&name, &pjsip_REALM_STR)) { - chal->realm = value; + chal->realm = unquoted_value; } else if (!pj_stricmp(&name, &pjsip_DOMAIN_STR)) { - chal->domain = value; + chal->domain = unquoted_value; } else if (!pj_stricmp(&name, &pjsip_NONCE_STR)) { - chal->nonce = value; + chal->nonce = unquoted_value; } else if (!pj_stricmp(&name, &pjsip_OPAQUE_STR)) { - chal->opaque = value; + chal->opaque = unquoted_value; } else if (!pj_stricmp(&name, &pjsip_STALE_STR)) { if (!pj_stricmp(&value, &pjsip_TRUE_STR) || @@ -162,11 +169,11 @@ static void parse_digest_challenge( pj_scanner *scanner, pj_pool_t *pool, } } else if (!pj_stricmp(&name, &pjsip_ALGORITHM_STR)) { - chal->algorithm = value; + chal->algorithm = unquoted_value; } else if (!pj_stricmp(&name, &pjsip_QOP_STR)) { - chal->qop = value; + chal->qop = unquoted_value; } else { pjsip_param *p = PJ_POOL_ALLOC_T(pool, pjsip_param); -- cgit v1.2.3