From dbeaa044f855ce90cf68b9ca3f6880b0d9110f36 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Mon, 12 Feb 2018 19:11:28 +0100 Subject: sgsnemu: Fix bad ptr during context deallocation Older commit switched pdp_t to have an array of 2 peers instead of only one in order to accomodate for ipv4v6 contexts, which can have 2 addresses assigned. The usage of peer field was not updated in sgsnemu accordingly, which means the wrong memory portion was being accessed. Fixes: 2d6a69e69a4b4cb2b8cc63c4810dae44e5a4d8f6 ("Add support for IPv4v6 End User Addresses") Change-Id: I9e563522173a82b265e93b1ef9dc93ced40fefa2 --- sgsnemu/sgsnemu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sgsnemu') diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c index cf4aa44..804b542 100644 --- a/sgsnemu/sgsnemu.c +++ b/sgsnemu/sgsnemu.c @@ -1312,8 +1312,8 @@ static int delete_context(struct pdp_t *pdp) if (tun && options.ipdown) tun_runscript(tun, options.ipdown); - ipdel((struct iphash_t *)pdp->peer); - memset(pdp->peer, 0, sizeof(struct iphash_t)); /* To be sure */ + ipdel((struct iphash_t *)pdp->peer[0]); + memset(pdp->peer[0], 0, sizeof(struct iphash_t)); /* To be sure */ if (1 == options.contexts) state = 5; /* Disconnected */ -- cgit v1.2.3