From 058ae12135c2e94de5b949ed4066ae03bb8b8121 Mon Sep 17 00:00:00 2001 From: Jacob Erlbeck Date: Fri, 10 Oct 2014 09:07:04 +0200 Subject: gbproxy: Discard UL PTP messages with an unknown BVCI Currently all PTP messages are in general forwarded to the SGSN even when the BVCI is not known to the gbproxy. Only if message patching is active and the peer cannot be determined, a log message is generated, a STATUS message returned, and the message discarded. The intention for this was to keep the old gbproxy's behaviour if patching is disabled. But the code gets much more complex this way. Another drawback is that when the SGSN returns a corresponding STATUS message, it cannot be routed to the BSS where the original message came from. This patch therefore changes the behaviour to reject BSSGP PTP uplink messages immediately if the BVCI is not known. Fixes: Coverity CID 1244240 Ticket: OW#1317 Sponsored-by: On-Waves ehf --- openbsc/src/gprs/gb_proxy.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'openbsc/src/gprs') diff --git a/openbsc/src/gprs/gb_proxy.c b/openbsc/src/gprs/gb_proxy.c index 9d2c774ee..ee296d106 100644 --- a/openbsc/src/gprs/gb_proxy.c +++ b/openbsc/src/gprs/gb_proxy.c @@ -792,20 +792,20 @@ static int gbprox_rx_ptp_from_bss(struct gbproxy_config *cfg, int rc; peer = gbproxy_peer_by_bvci(cfg, ns_bvci); + if (!peer) { + LOGP(DGPRS, LOGL_NOTICE, "Didn't find peer for " + "BVCI=%u for PTP message from NSVC=%u/NSEI=%u (BSS), " + "discarding message\n", + ns_bvci, nsvci, nsei); + return bssgp_tx_status(BSSGP_CAUSE_UNKNOWN_BVCI, + &ns_bvci, msg); + } check_peer_nsei(peer, nsei); - rc = gbprox_process_bssgp_ul(cfg, msg, peer); - if (!rc) { - if (!peer) { - LOGP(DGPRS, LOGL_NOTICE, "Didn't find peer for " - "BVCI=%u for PTP message from NSVC=%u/NSEI=%u (BSS)\n", - ns_bvci, nsvci, nsei); - return bssgp_tx_status(BSSGP_CAUSE_UNKNOWN_BVCI, - &ns_bvci, msg); - } + rc = gbprox_process_bssgp_ul(cfg, msg, peer); + if (!rc) return 0; - } switch (pdu_type) { case BSSGP_PDUT_FLOW_CONTROL_BVC: -- cgit v1.2.3