Changeset 1289


Ignore:
Timestamp:
May 22, 2007 9:55:31 PM (12 years ago)
Author:
bennylp
Message:

Fixed ticket #286: Bug in STUN FINGERPRINT verification and logging STUN message

Location:
pjproject/trunk/pjnath/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjnath/src/pjnath/stun_msg.c

    r1275 r1289  
    16571657 
    16581658        /* Check if FINGERPRINT attribute is present */ 
    1659         if (GETVAL16H(pdu, msg_len + 20) == PJ_STUN_ATTR_FINGERPRINT) { 
    1660             pj_uint16_t attr_len = GETVAL16H(pdu, msg_len + 22); 
    1661             pj_uint32_t fingerprint = GETVAL32H(pdu, msg_len + 24); 
     1659        if (GETVAL16H(pdu, msg_len + 20 - 8) == PJ_STUN_ATTR_FINGERPRINT) { 
     1660            pj_uint16_t attr_len = GETVAL16H(pdu, msg_len + 20 - 8 + 2); 
     1661            pj_uint32_t fingerprint = GETVAL32H(pdu, msg_len + 20 - 8 + 4); 
    16621662            pj_uint32_t crc; 
    16631663 
     
    16651665                return PJNATH_ESTUNINATTRLEN; 
    16661666 
    1667             crc = pj_crc32_calc(pdu, msg_len + 20); 
     1667            crc = pj_crc32_calc(pdu, msg_len + 20 - 8); 
    16681668            crc ^= STUN_XOR_FINGERPRINT; 
    16691669 
  • pjproject/trunk/pjnath/src/pjnath/stun_msg_dump.c

    r1152 r1289  
    9797                                       ", INVALID ADDRESS FAMILY!\n"); 
    9898            } 
     99            APPLY(); 
    99100        } 
    100101        break; 
     
    118119                                   (pj_uint32_t)attr->value, 
    119120                                   (pj_uint32_t)attr->value); 
     121            APPLY(); 
    120122        } 
    121123        break; 
     
    134136                                   (int)attr->value.slen, 
    135137                                   attr->value.ptr); 
     138            APPLY(); 
    136139        } 
    137140        break; 
     
    147150                                   (int)attr->reason.slen, 
    148151                                   attr->reason.ptr); 
     152            APPLY(); 
    149153        } 
    150154        break; 
     
    192196    default: 
    193197        len = pj_ansi_snprintf(p, end-p, "\n"); 
    194  
     198        APPLY(); 
    195199        break; 
    196200    } 
    197  
    198     APPLY(); 
    199201 
    200202    return (p-buffer); 
  • pjproject/trunk/pjnath/src/pjstun-srv-test/main.c

    r1275 r1289  
    133133 
    134134    status = pj_stun_turn_usage_create(srv, PJ_SOCK_DGRAM, NULL, 
    135                                        3478, &turn); 
     135                                       3478, o.use_fingerprint, &turn); 
    136136    if (status != PJ_SUCCESS) { 
    137137        pj_stun_perror(THIS_FILE, "Unable to create bind usage", status); 
  • pjproject/trunk/pjnath/src/pjstun-srv-test/server.h

    r1275 r1289  
    123123                                               const pj_str_t *ip_addr, 
    124124                                               unsigned port, 
     125                                               pj_bool_t use_fingerprint, 
    125126                                               pj_stun_usage **p_bu); 
    126127 
  • pjproject/trunk/pjnath/src/pjstun-srv-test/turn_usage.c

    r1275 r1289  
    8080    pj_hash_table_t     *client_htable; 
    8181    pj_stun_auth_cred   *cred; 
     82    pj_bool_t            use_fingerprint; 
    8283 
    8384    unsigned             max_bw_kbps; 
     
    147148                                              const pj_str_t *ip_addr, 
    148149                                              unsigned port, 
     150                                              pj_bool_t use_fingerprint, 
    149151                                              pj_stun_usage **p_bu) 
    150152{ 
     
    173175    tu->max_bw_kbps = 64; 
    174176    tu->max_lifetime = 10 * 60; 
     177    tu->use_fingerprint = use_fingerprint; 
    175178 
    176179    status = pj_sockaddr_in_init(&local_addr, ip_addr, (pj_uint16_t)port); 
     
    200203    sess_cb.on_rx_request = &tu_sess_on_rx_request; 
    201204    status = pj_stun_session_create(&si->stun_cfg, "turns%p", &sess_cb,  
    202                                     PJ_FALSE, &tu->default_session); 
     205                                    use_fingerprint, &tu->default_session); 
    203206    if (status != PJ_SUCCESS) { 
    204207        pj_stun_usage_destroy(tu->usage); 
     
    638641    sess_cb.on_rx_indication = &client_sess_on_rx_msg; 
    639642    status = pj_stun_session_create(tu->cfg, client->obj_name,  
    640                                     &sess_cb, PJ_FALSE, 
     643                                    &sess_cb, tu->use_fingerprint, 
    641644                                    &client->session); 
    642645    if (status != PJ_SUCCESS) { 
Note: See TracChangeset for help on using the changeset viewer.