diff options
author | Benny Prijono <bennylp@teluu.com> | 2007-05-22 21:55:31 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2007-05-22 21:55:31 +0000 |
commit | 9d72f1aa58317d2667feef40e54eef4d9fb5df29 (patch) | |
tree | 08f705b5f4413ffe0364a066fe3a1b1c3d6af179 /pjnath/src/pjnath/stun_msg.c | |
parent | a8a95675cba90ecd5ba2b7b36432641d4bf5703d (diff) |
Fixed ticket #286: Bug in STUN FINGERPRINT verification and logging STUN message
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1289 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjnath/src/pjnath/stun_msg.c')
-rw-r--r-- | pjnath/src/pjnath/stun_msg.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/pjnath/src/pjnath/stun_msg.c b/pjnath/src/pjnath/stun_msg.c index 74dbcfa9..5088954d 100644 --- a/pjnath/src/pjnath/stun_msg.c +++ b/pjnath/src/pjnath/stun_msg.c @@ -1656,15 +1656,15 @@ PJ_DEF(pj_status_t) pj_stun_msg_check(const pj_uint8_t *pdu, unsigned pdu_len, if (GETVAL32H(pdu, 4) == PJ_STUN_MAGIC) { /* Check if FINGERPRINT attribute is present */ - if (GETVAL16H(pdu, msg_len + 20) == PJ_STUN_ATTR_FINGERPRINT) { - pj_uint16_t attr_len = GETVAL16H(pdu, msg_len + 22); - pj_uint32_t fingerprint = GETVAL32H(pdu, msg_len + 24); + if (GETVAL16H(pdu, msg_len + 20 - 8) == PJ_STUN_ATTR_FINGERPRINT) { + pj_uint16_t attr_len = GETVAL16H(pdu, msg_len + 20 - 8 + 2); + pj_uint32_t fingerprint = GETVAL32H(pdu, msg_len + 20 - 8 + 4); pj_uint32_t crc; if (attr_len != 4) return PJNATH_ESTUNINATTRLEN; - crc = pj_crc32_calc(pdu, msg_len + 20); + crc = pj_crc32_calc(pdu, msg_len + 20 - 8); crc ^= STUN_XOR_FINGERPRINT; if (crc != fingerprint) |