diff options
-rw-r--r-- | toxcore/LAN_discovery.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/toxcore/LAN_discovery.c b/toxcore/LAN_discovery.c index 26366d0f..a4f1ccc2 100644 --- a/toxcore/LAN_discovery.c +++ b/toxcore/LAN_discovery.c | |||
@@ -42,6 +42,7 @@ static void fetch_broadcast_info(uint16_t port) | |||
42 | */ | 42 | */ |
43 | broadcast_count = 0; | 43 | broadcast_count = 0; |
44 | sock_t sock = 0; | 44 | sock_t sock = 0; |
45 | |||
45 | if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) | 46 | if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) |
46 | return; | 47 | return; |
47 | 48 | ||
@@ -64,6 +65,7 @@ static void fetch_broadcast_info(uint16_t port) | |||
64 | * enough, for everybody!) | 65 | * enough, for everybody!) |
65 | */ | 66 | */ |
66 | int i, count = ifconf.ifc_len / sizeof(struct ifreq); | 67 | int i, count = ifconf.ifc_len / sizeof(struct ifreq); |
68 | |||
67 | for (i = 0; i < count; i++) { | 69 | for (i = 0; i < count; i++) { |
68 | /* there are interfaces with are incapable of broadcast */ | 70 | /* there are interfaces with are incapable of broadcast */ |
69 | if (ioctl(sock, SIOCGIFBRDADDR, &i_faces[i]) < 0) | 71 | if (ioctl(sock, SIOCGIFBRDADDR, &i_faces[i]) < 0) |
@@ -74,6 +76,10 @@ static void fetch_broadcast_info(uint16_t port) | |||
74 | continue; | 76 | continue; |
75 | 77 | ||
76 | struct sockaddr_in *sock4 = (struct sockaddr_in *)&i_faces[i].ifr_broadaddr; | 78 | struct sockaddr_in *sock4 = (struct sockaddr_in *)&i_faces[i].ifr_broadaddr; |
79 | |||
80 | if (broadcast_count >= MAX_INTERFACES) | ||
81 | return; | ||
82 | |||
77 | IP_Port *ip_port = &broadcast_ip_port[broadcast_count]; | 83 | IP_Port *ip_port = &broadcast_ip_port[broadcast_count]; |
78 | ip_port->ip.family = AF_INET; | 84 | ip_port->ip.family = AF_INET; |
79 | ip_port->ip.ip4.in_addr = sock4->sin_addr; | 85 | ip_port->ip.ip4.in_addr = sock4->sin_addr; |
@@ -101,7 +107,7 @@ static uint32_t send_broadcasts(Networking_Core *net, uint16_t port, uint8_t *da | |||
101 | 107 | ||
102 | int i; | 108 | int i; |
103 | 109 | ||
104 | for(i = 0; i < broadcast_count; i++) | 110 | for (i = 0; i < broadcast_count; i++) |
105 | sendpacket(net, broadcast_ip_port[i], data, 1 + crypto_box_PUBLICKEYBYTES); | 111 | sendpacket(net, broadcast_ip_port[i], data, 1 + crypto_box_PUBLICKEYBYTES); |
106 | 112 | ||
107 | return 1; | 113 | return 1; |