diff options
author | Benny Prijono <bennylp@teluu.com> | 2009-12-29 17:37:51 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2009-12-29 17:37:51 +0000 |
commit | 2944d17a99b5f84b09713f36c430f94647be4f34 (patch) | |
tree | debe4eb9ae8cf2014e2a24036f53cd928310eb10 | |
parent | d01acefc0c6a0c755f6018c50484884deacda407 (diff) |
More ticket #1000:
- fixed bug caused by r3030. If an adapter with NULL firstUnicastAddress is found, the function will return uninitialized array element.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3038 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjlib/src/pj/ip_helper_win32.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/pjlib/src/pj/ip_helper_win32.c b/pjlib/src/pj/ip_helper_win32.c index 8603a588..5ff55a2d 100644 --- a/pjlib/src/pj/ip_helper_win32.c +++ b/pjlib/src/pj/ip_helper_win32.c @@ -275,11 +275,16 @@ static pj_status_t enum_ipv4_ipv6_interface(int af, if (rc != ERROR_SUCCESS) return PJ_RETURN_OS_ERROR(rc); - for (i=0; i<*p_cnt && adapter; ++i, adapter = adapter->Next) { + for (i=0; i<*p_cnt && adapter; adapter = adapter->Next) { if (adapter->FirstUnicastAddress) { SOCKET_ADDRESS *pAddr = &adapter->FirstUnicastAddress->Address; - ifs[i].addr.sa_family = pAddr->lpSockaddr->sa_family; - pj_memcpy(&ifs[i], pAddr->lpSockaddr, pAddr->iSockaddrLength); + if (pAddr->lpSockaddr->sa_family == PJ_AF_INET || + pAddr->lpSockaddr->sa_family == PJ_AF_INET6) + { + ifs[i].addr.sa_family = pAddr->lpSockaddr->sa_family; + pj_memcpy(&ifs[i], pAddr->lpSockaddr, pAddr->iSockaddrLength); + ++i; + } } } |