summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiza Sulistyo <riza@teluu.com>2014-06-10 02:56:56 +0000
committerRiza Sulistyo <riza@teluu.com>2014-06-10 02:56:56 +0000
commit97ebde15f373555da8309c7ebe657a2492b818b6 (patch)
tree0142f1306e766ced64891971e9aad24bfea10b78
parent4a585d9ba1be61c245af889753f0f36a0ec4e93c (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.c25
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);