aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2018-02-12 19:11:28 +0100
committerPau Espin Pedrol <pespin@sysmocom.de>2018-02-12 19:11:33 +0100
commitdbeaa044f855ce90cf68b9ca3f6880b0d9110f36 (patch)
tree49aa9c27f2e1c0e720d5a69753da365ab0a01e49
parent7ad4d5e8cbade58283b00d450dacb202c8988d73 (diff)
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
-rw-r--r--sgsnemu/sgsnemu.c4
1 files changed, 2 insertions, 2 deletions
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 */