diff options
Diffstat (limited to '3rdparty/openpgm-svn-r1135/pgm/getifaddrs.c.c89.patch')
-rw-r--r-- | 3rdparty/openpgm-svn-r1135/pgm/getifaddrs.c.c89.patch | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/3rdparty/openpgm-svn-r1135/pgm/getifaddrs.c.c89.patch b/3rdparty/openpgm-svn-r1135/pgm/getifaddrs.c.c89.patch new file mode 100644 index 0000000..d7e7c08 --- /dev/null +++ b/3rdparty/openpgm-svn-r1135/pgm/getifaddrs.c.c89.patch @@ -0,0 +1,218 @@ +--- getifaddrs.c 2010-07-03 20:31:27.000000000 +0800 ++++ getifaddrs.c89 2010-08-04 10:49:52.000000000 +0800 +@@ -507,7 +507,9 @@ + /* loop to handle interfaces coming online causing a buffer overflow + * between first call to list buffer length and second call to enumerate. + */ +- for (unsigned i = MAX_TRIES; i; i--) ++ { ++ unsigned i; ++ for (i = MAX_TRIES; i; i--) + { + pgm_debug ("IP_ADAPTER_INFO buffer length %lu bytes.", ulOutBufLen); + pAdapterInfo = (IP_ADAPTER_INFO*)_pgm_heap_alloc (ulOutBufLen); +@@ -519,6 +521,7 @@ + break; + } + } ++ } + + switch (dwRet) { + case ERROR_SUCCESS: /* NO_ERROR */ +@@ -543,12 +546,15 @@ + } + + /* count valid adapters */ ++ { + int n = 0, k = 0; + for (pAdapter = pAdapterInfo; + pAdapter; + pAdapter = pAdapter->Next) + { +- for (IP_ADDR_STRING *pIPAddr = &pAdapter->IpAddressList; ++ { ++ IP_ADDR_STRING *pIPAddr; ++ for (pIPAddr = &pAdapter->IpAddressList; + pIPAddr; + pIPAddr = pIPAddr->Next) + { +@@ -557,11 +563,13 @@ + continue; + ++n; + } ++ } + } + + pgm_debug ("GetAdaptersInfo() discovered %d interfaces.", n); + + /* contiguous block for adapter list */ ++ { + struct _pgm_ifaddrs_t* ifa = pgm_new0 (struct _pgm_ifaddrs_t, n); + struct _pgm_ifaddrs_t* ift = ifa; + +@@ -570,7 +578,9 @@ + pAdapter; + pAdapter = pAdapter->Next) + { +- for (IP_ADDR_STRING *pIPAddr = &pAdapter->IpAddressList; ++ { ++ IP_ADDR_STRING *pIPAddr; ++ for (pIPAddr = &pAdapter->IpAddressList; + pIPAddr; + pIPAddr = pIPAddr->Next) + { +@@ -586,8 +596,12 @@ + pgm_debug ("name:%s IPv4 index:%lu", + pAdapter->AdapterName, pAdapter->Index); + ift->_ifa.ifa_name = ift->_name; ++#ifdef _MSC_VER ++ strncpy_s (ift->_ifa.ifa_name, IF_NAMESIZE, pAdapter->AdapterName, _TRUNCATE); ++#else + strncpy (ift->_ifa.ifa_name, pAdapter->AdapterName, IF_NAMESIZE); + ift->_ifa.ifa_name[IF_NAMESIZE - 1] = 0; ++#endif + + /* flags: assume up, broadcast and multicast */ + ift->_ifa.ifa_flags = IFF_UP | IFF_BROADCAST | IFF_MULTICAST; +@@ -604,11 +618,14 @@ + ift = (struct _pgm_ifaddrs_t*)(ift->_ifa.ifa_next); + } + } ++ } + } + + if (pAdapterInfo) + free (pAdapterInfo); + *ifap = (struct pgm_ifaddrs_t*)ifa; ++ } ++ } + return TRUE; + } + +@@ -625,7 +642,9 @@ + /* loop to handle interfaces coming online causing a buffer overflow + * between first call to list buffer length and second call to enumerate. + */ +- for (unsigned i = MAX_TRIES; i; i--) ++ { ++ unsigned i; ++ for (i = MAX_TRIES; i; i--) + { + pgm_debug ("IP_ADAPTER_ADDRESSES buffer length %lu bytes.", dwSize); + pAdapterAddresses = (IP_ADAPTER_ADDRESSES*)_pgm_heap_alloc (dwSize); +@@ -645,6 +664,7 @@ + break; + } + } ++ } + + switch (dwRet) { + case ERROR_SUCCESS: +@@ -669,12 +689,15 @@ + } + + /* count valid adapters */ ++ { + int n = 0, k = 0; + for (adapter = pAdapterAddresses; + adapter; + adapter = adapter->Next) + { +- for (IP_ADAPTER_UNICAST_ADDRESS *unicast = adapter->FirstUnicastAddress; ++ { ++ IP_ADAPTER_UNICAST_ADDRESS *unicast; ++ for (unicast = adapter->FirstUnicastAddress; + unicast; + unicast = unicast->Next) + { +@@ -687,9 +710,11 @@ + + ++n; + } ++ } + } + + /* contiguous block for adapter list */ ++ { + struct _pgm_ifaddrs_t* ifa = pgm_new0 (struct _pgm_ifaddrs_t, n); + struct _pgm_ifaddrs_t* ift = ifa; + +@@ -699,7 +724,9 @@ + adapter = adapter->Next) + { + int unicastIndex = 0; +- for (IP_ADAPTER_UNICAST_ADDRESS *unicast = adapter->FirstUnicastAddress; ++ { ++ IP_ADAPTER_UNICAST_ADDRESS *unicast; ++ for (unicast = adapter->FirstUnicastAddress; + unicast; + unicast = unicast->Next, ++unicastIndex) + { +@@ -718,8 +745,12 @@ + pgm_debug ("name:%s IPv4 index:%lu IPv6 index:%lu", + adapter->AdapterName, adapter->IfIndex, adapter->Ipv6IfIndex); + ift->_ifa.ifa_name = ift->_name; ++#ifdef _MSC_VER ++ strncpy_s (ift->_ifa.ifa_name, IF_NAMESIZE, adapter->AdapterName, _TRUNCATE); ++#else + strncpy (ift->_ifa.ifa_name, adapter->AdapterName, IF_NAMESIZE); + ift->_ifa.ifa_name[IF_NAMESIZE - 1] = 0; ++#endif + + /* flags */ + ift->_ifa.ifa_flags = 0; +@@ -734,9 +765,12 @@ + ift->_ifa.ifa_netmask = (void*)&ift->_netmask; + + /* pre-Vista must hunt for matching prefix in linked list, otherwise use OnLinkPrefixLength */ ++ { + int prefixIndex = 0; + ULONG prefixLength = 0; +- for (IP_ADAPTER_PREFIX *prefix = adapter->FirstPrefix; ++ { ++ IP_ADAPTER_PREFIX *prefix; ++ for (prefix = adapter->FirstPrefix; + prefix; + prefix = prefix->Next, ++prefixIndex) + { +@@ -745,6 +779,7 @@ + break; + } + } ++ } + + /* map prefix to netmask */ + ift->_ifa.ifa_netmask->sa_family = unicast->Address.lpSockaddr->sa_family; +@@ -762,12 +797,16 @@ + pgm_warn (_("IPv6 adapter %s prefix length is 0, overriding to 128."), adapter->AdapterName); + prefixLength = 128; + } +- for (ULONG i = prefixLength, j = 0; i > 0; i -= 8, ++j) ++ { ++ ULONG i, j; ++ for (i = prefixLength, j = 0; i > 0; i -= 8, ++j) + { + ((struct sockaddr_in6*)ift->_ifa.ifa_netmask)->sin6_addr.s6_addr[ j ] = i >= 8 ? 0xff : (ULONG)(( 0xffU << ( 8 - i ) ) & 0xffU ); + } ++ } + break; + } ++ } + + /* next */ + if (k++ < (n - 1)) { +@@ -775,11 +814,14 @@ + ift = (struct _pgm_ifaddrs_t*)(ift->_ifa.ifa_next); + } + } ++ } + } + + if (pAdapterAddresses) + free (pAdapterAddresses); + *ifap = (struct pgm_ifaddrs_t*)ifa; ++ } ++ } + return TRUE; + } + #endif /* _WIN32 */ |