From 0436e42472a48a91cc6f743b3bca3f09a2ffd490 Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 2 Mar 2017 13:28:52 +0100 Subject: [PATCH] Fix potential segfault in sgsn_libgtp.c * print pdp->address instead of mm->imsi if mm is NULL * print mm->imsi in debug log (move it below NULL check) Change-Id: I4fbf5a54019a46612fbc528d61120182738f9205 --- openbsc/src/gprs/sgsn_libgtp.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/openbsc/src/gprs/sgsn_libgtp.c b/openbsc/src/gprs/sgsn_libgtp.c index dde1e5e30..c26abc992 100644 --- a/openbsc/src/gprs/sgsn_libgtp.c +++ b/openbsc/src/gprs/sgsn_libgtp.c @@ -641,8 +641,6 @@ static int cb_data_ind(struct pdp_t *lib, void *packet, unsigned int len) struct msgb *msg; uint8_t *ud; - DEBUGP(DGPRS, "GTP DATA IND from GGSN, length=%u\n", len); - pdp = lib->priv; if (!pdp) { LOGP(DGPRS, LOGL_NOTICE, @@ -652,10 +650,14 @@ static int cb_data_ind(struct pdp_t *lib, void *packet, unsigned int len) mm = pdp->mm; if (!mm) { LOGP(DGPRS, LOGL_ERROR, - "PDP context (imsi=%s) without MM context!\n", mm->imsi); + "PDP context (address=%u) without MM context!\n", + pdp->address); return -EIO; } + DEBUGP(DGPRS, "GTP DATA IND from GGSN for %s, length=%u\n", mm->imsi, + len); + if (mm->ran_type == MM_CTX_T_UTRAN_Iu) { #ifdef BUILD_IU /* Ignore the packet for now and page the UE to get the RAB