diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2018-02-12 19:11:28 +0100 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2018-02-12 19:11:33 +0100 |
commit | dbeaa044f855ce90cf68b9ca3f6880b0d9110f36 (patch) | |
tree | 49aa9c27f2e1c0e720d5a69753da365ab0a01e49 /sgsnemu | |
parent | 7ad4d5e8cbade58283b00d450dacb202c8988d73 (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
Diffstat (limited to 'sgsnemu')
-rw-r--r-- | sgsnemu/sgsnemu.c | 4 |
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 */ |