summaryrefslogtreecommitdiffstats
path: root/3rdparty/openpgm-svn-r1135/pgm/getifaddrs.c.c89.patch
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/openpgm-svn-r1135/pgm/getifaddrs.c.c89.patch')
-rw-r--r--3rdparty/openpgm-svn-r1135/pgm/getifaddrs.c.c89.patch218
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 */