aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2019-02-25 11:22:48 +0100
committerGitHub <noreply@github.com>2019-02-25 11:22:48 +0100
commit2d639c819bd35d799b3f32b669b47db287b07ff1 (patch)
tree4d92170d90129bbdf5086ba9063537e58006f694
parentf2ec58545c8b48a8a664d9839bc73129231839ee (diff)
parent70973ac736e8b669f121a4c96b510e451fd130fc (diff)
Merge pull request #9 from Masaq-/extended-options
fix segmentation fault when network is unreachable
-rw-r--r--src/pkt.c2
-rw-r--r--src/ptunnel.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/src/pkt.c b/src/pkt.c
index e2fd2a8..beb6291 100644
--- a/src/pkt.c
+++ b/src/pkt.c
@@ -467,6 +467,7 @@ void handle_ack(uint16_t seq_no, icmp_desc_t ring[], int *packets_awaiting_ack,
*remote_ack = (uint16_t)ntohl(pt_pkt->ack);
free(ring[i].pkt);
ring[i].pkt = 0;
+ ring[i].pkt_len = 0;
(*packets_awaiting_ack)--;
if (i == *first_ack) {
for (j=1;j<window_size;j++) {
@@ -504,6 +505,7 @@ void handle_ack(uint16_t seq_no, icmp_desc_t ring[], int *packets_awaiting_ack,
if (can_ack) {
free(ring[i].pkt);
ring[i].pkt = 0;
+ ring[i].pkt_len = 0;
(*packets_awaiting_ack)--;
}
i--;
diff --git a/src/ptunnel.c b/src/ptunnel.c
index 640df74..fad0944 100644
--- a/src/ptunnel.c
+++ b/src/ptunnel.c
@@ -668,7 +668,7 @@ void* pt_proxy(void *args) {
cur->dst_ip, cur->dst_port, kProto_ack | cur->type_flag,
&cur->dest_addr, cur->next_remote_seq, &cur->send_first_ack, &cur->ping_seq, cur->window_size);
cur->xfer.icmp_ack_out++;
- if (cur->send_ring[idx].pkt_len > sizeof(icmp_echo_packet_t) && cur->send_ring[idx].pkt->type == 8) {
+ if (cur->send_ring[idx].pkt_len > sizeof(icmp_echo_packet_t) && cur->send_ring[idx].pkt->type == kICMP_echo_request) {
for (uint16_t e = 0; e < opts.empty_pings; e++) {
cur->send_ring[idx].pkt->seq = htons(cur->ping_seq);
cur->ping_seq++;