struct in_addr addr,
struct sockaddr_in *broadcast,
struct hardware *hardware ) {
- int result =
- sendto( ip->wfdesc, (char *)p, size, 0,
+ int result;
+
+ if (size > INT_MAX)
+ return WSAEMSGSIZE;
+
+ result =
+ sendto( ip->wfdesc, (char *)p, (int)size, 0,
(struct sockaddr *)broadcast, sizeof(*broadcast) );
if (result < 0) {
struct sockaddr_in *dest,
struct hardware *hardware ) {
int recv_addr_size = sizeof(*dest);
- int result =
- recvfrom (ip -> rfdesc, (char *)packet_data, packet_len, 0,
+ int result;
+
+ if (packet_len > INT_MAX)
+ return WSAEMSGSIZE;
+
+ result =
+ recvfrom (ip -> rfdesc, (char *)packet_data, (int)packet_len, 0,
(struct sockaddr *)dest, &recv_addr_size );
return result;
}