diff options
author | Riza Sulistyo <riza@teluu.com> | 2014-06-10 02:56:56 +0000 |
---|---|---|
committer | Riza Sulistyo <riza@teluu.com> | 2014-06-10 02:56:56 +0000 |
commit | 97ebde15f373555da8309c7ebe657a2492b818b6 (patch) | |
tree | 0142f1306e766ced64891971e9aad24bfea10b78 | |
parent | 4a585d9ba1be61c245af889753f0f36a0ec4e93c (diff) |
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
-rw-r--r-- | pjsip/src/pjsip/sip_auth_parser.c | 25 |
1 files 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); |