summaryrefslogtreecommitdiff
path: root/pjnath/src/pjnath/stun_msg.c
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-05-22 21:55:31 +0000
committerBenny Prijono <bennylp@teluu.com>2007-05-22 21:55:31 +0000
commit9d72f1aa58317d2667feef40e54eef4d9fb5df29 (patch)
tree08f705b5f4413ffe0364a066fe3a1b1c3d6af179 /pjnath/src/pjnath/stun_msg.c
parenta8a95675cba90ecd5ba2b7b36432641d4bf5703d (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.c8
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)