gtp_update_pdp_ind(): fix NULL-pointer dereference
As stated in the comment above, we need to use the tunnel identifier to find a GTP context, and derive both IMSI and NSAPI from that TID, when speaking GTP version 0. This change fixes the following warnings (found with Clang): gtp.c:2115:22: warning: variable 'pdp' is uninitialized when used here [-Wuninitialized] pdp_set_imsi_nsapi(pdp, tid); ^^^ gtp.c:2118:34: warning: variable 'imsi' is uninitialized when used here [-Wuninitialized] if (gtp_pdp_getimsi(gsn, &pdp, imsi, nsapi)) ^^^^ gtp.c:2118:40: warning: variable 'nsapi' is uninitialized when used here [-Wuninitialized] if (gtp_pdp_getimsi(gsn, &pdp, imsi, nsapi)) ^^^^^ Change-Id: I8f1c8d0ba2e8189d97fe1bb5c872680e5ad1cd7a
This commit is contained in:
parent
26e300fda0
commit
00a6171b8d
|
@ -2084,12 +2084,8 @@ static int gtp_update_pdp_ind(struct gsn_t *gsn, uint8_t version,
|
||||||
/* For GTP1 we must use imsi and nsapi if imsi is present. Otherwise */
|
/* For GTP1 we must use imsi and nsapi if imsi is present. Otherwise */
|
||||||
/* we have to use the tunnel endpoint identifier */
|
/* we have to use the tunnel endpoint identifier */
|
||||||
if (version == 0) {
|
if (version == 0) {
|
||||||
uint64_t tid = be64toh(((union gtp_packet *)pack)->gtp0.h.tid);
|
|
||||||
|
|
||||||
pdp_set_imsi_nsapi(pdp, tid);
|
|
||||||
|
|
||||||
/* Find the context in question */
|
/* Find the context in question */
|
||||||
if (gtp_pdp_getimsi(gsn, &pdp, imsi, nsapi)) {
|
if (gtp_pdp_tidget(gsn, &pdp, get_tid(pack))) {
|
||||||
gsn->err_unknownpdp++;
|
gsn->err_unknownpdp++;
|
||||||
GTP_LOGPKG(LOGL_ERROR, peer, pack,
|
GTP_LOGPKG(LOGL_ERROR, peer, pack,
|
||||||
len, "Unknown PDP context\n");
|
len, "Unknown PDP context\n");
|
||||||
|
@ -2097,6 +2093,9 @@ static int gtp_update_pdp_ind(struct gsn_t *gsn, uint8_t version,
|
||||||
len, NULL,
|
len, NULL,
|
||||||
GTPCAUSE_NON_EXIST);
|
GTPCAUSE_NON_EXIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Update IMSI and NSAPI */
|
||||||
|
pdp_set_imsi_nsapi(pdp, get_tid(pack));
|
||||||
} else if (version == 1) {
|
} else if (version == 1) {
|
||||||
/* NSAPI (mandatory) */
|
/* NSAPI (mandatory) */
|
||||||
if (gtpie_gettv1(ie, GTPIE_NSAPI, 0, &nsapi)) {
|
if (gtpie_gettv1(ie, GTPIE_NSAPI, 0, &nsapi)) {
|
||||||
|
|
Loading…
Reference in New Issue