diff options
author | Laurent Ghigonis <laurent@p1sec.com> | 2013-07-08 19:32:56 +0200 |
---|---|---|
committer | Laurent Ghigonis <laurent@p1sec.com> | 2013-07-08 19:32:56 +0200 |
commit | a3b2d502b95700cdff38d3a3eafd28d32e39f402 (patch) | |
tree | 20c356a6ec6f42337ec3e2620d417cfe38d827ef /libglouglou/libggnet_traceroute.c | |
parent | compile gg_map gg_sniff and libglouglou with -O0 -g (diff) | |
download | glouglou-a3b2d502b95700cdff38d3a3eafd28d32e39f402.tar.xz glouglou-a3b2d502b95700cdff38d3a3eafd28d32e39f402.zip |
fix segfault because of bad libdnet intf_get_dst() usage
shame on libdnet for this shitty interface !
Diffstat (limited to 'libglouglou/libggnet_traceroute.c')
-rw-r--r-- | libglouglou/libggnet_traceroute.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/libglouglou/libggnet_traceroute.c b/libglouglou/libggnet_traceroute.c index 8c189f0..6003175 100644 --- a/libglouglou/libggnet_traceroute.c +++ b/libglouglou/libggnet_traceroute.c @@ -198,7 +198,8 @@ ggnet_traceroute_trace(struct ggnet_traceroute *ggtr, struct addr *ip, void *data) { struct ggnet_traceroute_req *req; - struct intf_entry intf_entry; + struct intf_entry *intfentry; + char buf[1024]; req = calloc(1, sizeof(struct ggnet_traceroute_req)); if (!req) { @@ -211,13 +212,17 @@ ggnet_traceroute_trace(struct ggnet_traceroute *ggtr, struct addr *ip, exit(1); } + intfentry = (struct intf_entry *)buf; + memset(intfentry, 0, sizeof(struct intf_entry)); + intfentry->intf_len = sizeof(buf); memcpy(&req->target->ip, ip, sizeof(struct addr)); - if (intf_get_dst(ggtr->intf, &intf_entry, &req->target->ip) < 0) { + if (intf_get_dst(ggtr->intf, intfentry, &req->target->ip) < 0) { printf("error getting source IP for dest IP %s (%p)\n", addr_ntoa(&req->target->ip), ggtr->intf); goto err; } - memcpy(&req->srcip, &intf_entry.intf_addr, sizeof(struct addr)); + printf("XXX intfentry->intf_addr %s\n", addr_ntoa(&intfentry->intf_addr)); + memcpy(&req->srcip, &intfentry->intf_addr, sizeof(struct addr)); req->params = params; TAILQ_INIT(&req->hops_list); |