filter/nat: Fix the context for the imsi assignment

In c09f8a3b7f as part of a cleanup
I accidently changed the talloc context from "con" to "bsc". The
issue occurred at an earlier commit when assigning req.ctx to the
"wrong" context. The allocation needs to be scoped by the struct
nat_sccp_connection and not the connection from BSC to NAT.

Before we have a nat_sccp_connection we scope the copied imsi to
the bsc_connection and then steal it, but for the identity resp
we will always have a nat_sccp_connection and can already use the
right context.

Change-Id: I53789aad2809e19338ad3b2deb72c4757e7bd524
Related: OS#1733
Reviewed-on: https://gerrit.osmocom.org/102
Tested-by: Jenkins Builder
Reviewed-by: Harald Welte <laforge@gnumonks.org>
Reviewed-by: daniel <dwillmann@sysmocom.de>
Reviewed-by: Holger Freyther <holger@freyther.de>
This commit is contained in:
Holger Hans Peter Freyther 2016-05-23 17:58:03 +02:00 committed by Holger Freyther
parent ddf4e1e114
commit 5b692d0a5c
2 changed files with 4 additions and 1 deletions

View File

@ -109,7 +109,7 @@ int bsc_nat_filter_dt(struct bsc_connection *bsc, struct msgb *msg,
if (!hdr48)
return -1;
req.ctx = bsc;
req.ctx = con;
req.black_list = &bsc->nat->imsi_black_list;
req.access_lists = &bsc->nat->access_lists;
req.local_lst_name = bsc->cfg->acc_lst_name;

View File

@ -978,10 +978,13 @@ static void test_dt_filter()
}
memset(&cause, 0, sizeof(cause));
OSMO_ASSERT(!con->filter_state.imsi);
if (bsc_nat_filter_dt(bsc, msg, con, parsed, &cause) != 1) {
printf("FAIL: Should have passed..\n");
abort();
}
OSMO_ASSERT(con->filter_state.imsi);
OSMO_ASSERT(talloc_parent(con->filter_state.imsi) == con);
/* just some basic length checking... */
for (i = ARRAY_SIZE(id_resp); i >= 0; --i) {