Ignore:
Timestamp:
Dec 5, 2007 5:08:29 AM (16 years ago)
Author:
bennylp
Message:

Fixed run-time error on MacOS X (and possibly BSD based systems) when bind() is called with larger addrlen

File:
1 edited

Legend:

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

    r1601 r1621  
    123123const int PJ_MSG_DONTROUTE      = MSG_DONTROUTE; 
    124124 
     125 
     126#if 0 
     127static void CHECK_ADDR_LEN(const pj_sockaddr *addr, int len) 
     128{ 
     129    pj_sockaddr *a = (pj_sockaddr*)addr; 
     130    pj_assert((a->addr.sa_family==PJ_AF_INET && len==sizeof(pj_sockaddr_in)) || 
     131              (a->addr.sa_family==PJ_AF_INET6 && len==sizeof(pj_sockaddr_in6))); 
     132 
     133} 
     134#else 
     135#define CHECK_ADDR_LEN(addr,len) 
     136#endif 
    125137 
    126138/* 
     
    450462#endif 
    451463 
    452  
    453464/* 
    454465 * Bind socket. 
     
    461472 
    462473    PJ_ASSERT_RETURN(addr && len >= (int)sizeof(struct sockaddr_in), PJ_EINVAL); 
     474 
     475    CHECK_ADDR_LEN(addr, len); 
    463476 
    464477    if (bind(sock, (struct sockaddr*)addr, len) != 0) 
     
    575588    PJ_CHECK_STACK(); 
    576589    PJ_ASSERT_RETURN(len, PJ_EINVAL); 
     590     
     591    CHECK_ADDR_LEN(to, tolen); 
    577592 
    578593    *len = sendto(sock, (const char*)buf, *len, flags,  
Note: See TracChangeset for help on using the changeset viewer.