Changeset 5146 for pjproject/trunk


Ignore:
Timestamp:
Aug 5, 2015 6:31:45 AM (9 years ago)
Author:
ming
Message:

Fixed #1874: Truncated IPv6 address during address lookup on iOS

Thanks to Brian Walker for the patch.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjlib/src/pj/addr_resolv_sock.c

    r3553 r5146  
    130130            for (idx = 0; idx < naddr && i < *count; idx++) { 
    131131                struct sockaddr *addr; 
     132                size_t addr_size; 
    132133                 
    133134                addr = (struct sockaddr *) 
     
    144145                 
    145146                /* Store address */ 
    146                 PJ_ASSERT_ON_FAIL(sizeof(*addr) <= sizeof(pj_sockaddr), 
    147                                   continue); 
    148                 pj_memcpy(&ai[i].ai_addr, addr, sizeof(*addr)); 
     147                addr_size = sizeof(*addr); 
     148                if (af == PJ_AF_INET6) { 
     149                    addr_size = addr->sa_len; 
     150                } 
     151                PJ_ASSERT_ON_FAIL(addr_size <= sizeof(pj_sockaddr),                               continue); 
     152                pj_memcpy(&ai[i].ai_addr, addr, addr_size); 
    149153                PJ_SOCKADDR_RESET_LEN(&ai[i].ai_addr); 
    150154                 
Note: See TracChangeset for help on using the changeset viewer.