summaryrefslogtreecommitdiffstats
path: root/openbsc/src
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-07-23 21:59:29 +0200
committerHarald Welte <laforge@gnumonks.org>2010-07-23 22:00:45 +0200
commitb73631455bc6b9304d72eb4af0d4510f28f6368e (patch)
treec0f214a1604e8b6bb8f8376bbaeb3a3cd067e4db /openbsc/src
parenta1726e9f6b8b337b12075bb790b8d8410e070648 (diff)
[gprs] BSSGP: Fix null pointer dereference
Zecke has found this using "make CC="clang --analyze"
Diffstat (limited to 'openbsc/src')
-rw-r--r--openbsc/src/gprs/gprs_bssgp.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/openbsc/src/gprs/gprs_bssgp.c b/openbsc/src/gprs/gprs_bssgp.c
index 30bc0f9b..051ec92f 100644
--- a/openbsc/src/gprs/gprs_bssgp.c
+++ b/openbsc/src/gprs/gprs_bssgp.c
@@ -429,7 +429,7 @@ static int bssgp_rx_resume(struct msgb *msg, struct tlv_parsed *tp,
static int bssgp_rx_llc_disc(struct msgb *msg, struct tlv_parsed *tp,
struct bssgp_bvc_ctx *ctx)
{
- uint32_t tlli;
+ uint32_t tlli = 0;
if (!TLVP_PRESENT(tp, BSSGP_IE_TLLI) ||
!TLVP_PRESENT(tp, BSSGP_IE_LLC_FRAMES_DISCARDED) ||
@@ -439,7 +439,8 @@ static int bssgp_rx_llc_disc(struct msgb *msg, struct tlv_parsed *tp,
"missing mandatory IE\n", ctx->bvci);
}
- tlli = ntohl(*(uint32_t *)TLVP_VAL(tp, BSSGP_IE_TLLI));
+ if (TLVP_PRESENT(tp, BSSGP_IE_TLLI))
+ tlli = ntohl(*(uint32_t *)TLVP_VAL(tp, BSSGP_IE_TLLI));
DEBUGP(DBSSGP, "BSSGP BVCI=%u TLLI=%08x LLC DISCARDED\n",
ctx->bvci, tlli);