diff options
Diffstat (limited to 'pjlib-util/src/pjlib-util/stun_simple.c')
-rw-r--r-- | pjlib-util/src/pjlib-util/stun_simple.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/pjlib-util/src/pjlib-util/stun_simple.c b/pjlib-util/src/pjlib-util/stun_simple.c index 7b7aa772..9bc6b457 100644 --- a/pjlib-util/src/pjlib-util/stun_simple.c +++ b/pjlib-util/src/pjlib-util/stun_simple.c @@ -86,6 +86,7 @@ PJ_DEF(pj_status_t) pjstun_parse_msg( void *buf, pj_size_t len, while (msg_len > 0) { pjstun_attr_hdr **attr = &msg->attr[msg->attr_count]; pj_uint32_t len; + pj_uint16_t attr_type; *attr = (pjstun_attr_hdr*)p_attr; len = pj_ntohs((pj_uint16_t) ((*attr)->length)) + sizeof(pjstun_attr_hdr); @@ -97,10 +98,13 @@ PJ_DEF(pj_status_t) pjstun_parse_msg( void *buf, pj_size_t len, return PJLIB_UTIL_ESTUNINATTRLEN; } - if (pj_ntohs((*attr)->type) > PJSTUN_ATTR_REFLECTED_FORM) { + attr_type = pj_ntohs((*attr)->type); + if (attr_type > PJSTUN_ATTR_REFLECTED_FROM && + attr_type != PJSTUN_ATTR_XOR_MAPPED_ADDR) + { PJ_LOG(5,(THIS_FILE, "Warning: unknown attr type %x in attr %d. " "Attribute was ignored.", - pj_ntohs((*attr)->type), msg->attr_count)); + attr_type, msg->attr_count)); } msg_len = (pj_uint16_t)(msg_len - len); |