diff options
author | Harald Welte <laforge@gnumonks.org> | 2010-07-23 21:59:29 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-07-23 22:00:45 +0200 |
commit | b73631455bc6b9304d72eb4af0d4510f28f6368e (patch) | |
tree | c0f214a1604e8b6bb8f8376bbaeb3a3cd067e4db /openbsc | |
parent | a1726e9f6b8b337b12075bb790b8d8410e070648 (diff) |
[gprs] BSSGP: Fix null pointer dereference
Zecke has found this using "make CC="clang --analyze"
Diffstat (limited to 'openbsc')
-rw-r--r-- | openbsc/src/gprs/gprs_bssgp.c | 5 |
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); |