summaryrefslogtreecommitdiff
path: root/pjlib-util/src/pjlib-util/stun_simple.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjlib-util/src/pjlib-util/stun_simple.c')
-rw-r--r--pjlib-util/src/pjlib-util/stun_simple.c8
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);