fix: some leak
This commit is contained in:
12
src/main.c
12
src/main.c
@@ -112,21 +112,21 @@ static int create_socket(struct setting const *settings)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = setsockopt(sockfd, IPPROTO_IP, IP_TTL, &settings->ttl, sizeof(uint8_t));
|
ret = setsockopt(sockfd, IPPROTO_IP, IP_TTL, &settings->ttl, sizeof(settings->ttl));
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
{
|
{
|
||||||
|
close(sockfd);
|
||||||
print_err("Failed to setsockopt(): ttl");
|
print_err("Failed to setsockopt(): ttl");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
struct timeval tv = {2, 0};
|
||||||
struct timeval tv = {1, 0};
|
|
||||||
ret = setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv));
|
ret = setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv));
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
{
|
{
|
||||||
|
close(sockfd);
|
||||||
print_err("Failed to setsockopt(): recv timeout");
|
print_err("Failed to setsockopt(): recv timeout");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sockfd;
|
return sockfd;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,13 +209,13 @@ int main(int ac, char **av)
|
|||||||
ret = recvfrom(sockfd, buffer, recv_packet_size, 0, (struct sockaddr *) &sender, &len);
|
ret = recvfrom(sockfd, buffer, recv_packet_size, 0, (struct sockaddr *) &sender, &len);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
print_err("error: receive packet failed.");
|
print_err("error: receive packet failed.%zd", ret);
|
||||||
goto error3;
|
goto error3;
|
||||||
}
|
}
|
||||||
gettimeofday(&stop, NULL);
|
gettimeofday(&stop, NULL);
|
||||||
}
|
}
|
||||||
while (((size_t) ret != recv_packet_size) || (check_reply(&settings.dest.ip, &sender, packet, buffer + sizeof(struct iphdr), packet_size)));
|
while (((size_t) ret != recv_packet_size) || (check_reply(&settings.dest.ip, &sender, packet, buffer + sizeof(struct iphdr), packet_size)));
|
||||||
|
|
||||||
if (((struct icmphdr *) buffer + sizeof(struct iphdr))->type == 0)
|
if (((struct icmphdr *) buffer + sizeof(struct iphdr))->type == 0)
|
||||||
stats.packets_received++;
|
stats.packets_received++;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user