osmo-msc/src/libmsc
Neels Hofmeyr 2e8f881f72 fix segfault: don't send CC REL on NULL msc_a
Apparently, if a conn disappears during an ongoing call, the CC code tried to
send a CC REL on a NULL msc_a during cleanup, which lead to a crash
(cccamp2019). Guard against that.

Crash:

 #0  msc_a_tx_dtap_to_i (msc_a=0x0, dtap=0x55a4bf2fa0f0) at ../../../../src/osmo-msc/src/libmsc/msc_a.c:1565
 #1  0x000055a4be1bb03c in trans_tx_gsm48 (trans=0x55a4bf2d52a0, trans=0x55a4bf2d52a0, trans=0x55a4bf2d52a0, msg=<optimized out>)
     at ../../../../src/osmo-msc/src/libmsc/gsm_04_08_cc.c:82
 #2  gsm48_cc_tx_release (trans=trans@entry=0x55a4bf2d52a0, arg=arg@entry=0x7ffdd731a0e0) at ../../../../src/osmo-msc/src/libmsc/gsm_04_08_cc.c:1101
 #3  0x000055a4be1bee65 in _gsm48_cc_trans_free (trans=trans@entry=0x55a4bf2d52a0) at ../../../../src/osmo-msc/src/libmsc/gsm_04_08_cc.c:278
 #4  0x000055a4be1ab654 in trans_free (trans=trans@entry=0x55a4bf2d52a0) at ../../../../src/osmo-msc/src/libmsc/transaction.c:170
 #5  0x000055a4be1bd091 in mncc_tx_to_gsm_cc (net=<optimized out>, msg=msg@entry=0x55a4bf2d3b68)
     at ../../../../src/osmo-msc/src/libmsc/gsm_04_08_cc.c:1971
 #6  0x000055a4be1bf1e5 in mncc_tx_to_cc (net=<optimized out>, arg=arg@entry=0x55a4bf2d3b68)
     at ../../../../src/osmo-msc/src/libmsc/gsm_04_08_cc.c:2049
 #7  0x000055a4be18ed63 in mncc_sock_read (bfd=0x55a4bf2563b8, bfd=0x55a4bf2563b8) at ../../../../src/osmo-msc/src/libmsc/mncc_sock.c:121
 #8  mncc_sock_cb (bfd=0x55a4bf2563b8, flags=1) at ../../../../src/osmo-msc/src/libmsc/mncc_sock.c:189
 #9  0x00007fcfad607ce1 in osmo_fd_disp_fds (_eset=0x7ffdd731a9a0, _wset=0x7ffdd731a920, _rset=0x7ffdd731a8a0)
     at ../../../src/libosmocore/src/select.c:223
 #10 osmo_select_main (polling=<optimized out>) at ../../../src/libosmocore/src/select.c:263
 #11 0x000055a4be17dd56 in main (argc=3, argv=<optimized out>) at ../../../../src/osmo-msc/src/osmo-msc/msc_main.c:723

Change-Id: Ia1bb0410ad0618c182a5f6da06af342b6d483eff
2019-08-29 05:42:02 +00:00
..
Makefile.am large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
call_leg.c Request Osmux CID and forward it in Assign Req and Assign Compl 2019-05-21 18:32:38 +02:00
cell_id_list.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
ctrl_commands.c vlr_subscr: use osmo_use_count 2019-04-12 02:15:25 +02:00
db.c libmsc/db.c: get rid of hard-coded SMS expiry threshold 2019-06-07 08:05:24 +07:00
e_link.c GSUP: include terminating nul in inter-MSC source/destination name 2019-05-08 17:02:32 +02:00
gsm_04_08.c add 'encryption uea 1 2' cfg / fix ttcn3 iu tests 2019-08-13 23:52:31 +02:00
gsm_04_08_cc.c fix segfault: don't send CC REL on NULL msc_a 2019-08-29 05:42:02 +00:00
gsm_04_11.c libmsc/gsm_04_11.c: do not abuse LOG_TRANS() in gsm411_alloc_mt_trans() 2019-06-20 16:54:45 +00:00
gsm_04_11_gsup.c gsm_04_11_gsup.c: fix broken reference counting for vsub 2019-06-20 16:54:45 +00:00
gsm_04_14.c rename bscconfig.h to config.h, cleanup 2019-05-08 17:02:32 +02:00
gsm_04_80.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
gsm_09_11.c replace osmo_counter with stat_items 2019-07-18 14:50:51 +00:00
gsup_client_mux.c gsup_client_mux_tx_error_reply(): fix: do not omit SM-RP-MR IE 2019-06-15 13:13:50 +07:00
mncc.c Set coding in mncc_set_cause() 2019-08-02 08:08:33 +00:00
mncc_builtin.c libmsc/mncc_builtin.c: drop dummy switch in int_mncc_recv() 2019-06-14 22:58:33 +07:00
mncc_call.c libmsc/mncc_call.c: fix uninitialized access of stack memory 2019-05-13 20:15:04 +00:00
mncc_sock.c fix regression: fix internal MNCC operation 2019-05-09 01:23:09 +02:00
msc_a.c fix segfault: don't send CC REL on NULL msc_a 2019-08-29 05:42:02 +00:00
msc_a_remote.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
msc_ho.c libmsc/msc_ho.c: fix unreacheable check of MSC-T role allocation 2019-05-13 20:15:04 +00:00
msc_i.c call_leg: remove unused event MSC_EV_CALL_LEG_RTP_RELEASED 2019-05-10 07:13:41 +00:00
msc_i_remote.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
msc_net_init.c add 'encryption uea 1 2' cfg / fix ttcn3 iu tests 2019-08-13 23:52:31 +02:00
msc_t.c Use GSM23003_MSISDN_MAX_DIGITS from libosmogsm 2019-05-29 08:48:16 +00:00
msc_t_remote.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
msc_vty.c add 'encryption uea 1 2' cfg / fix ttcn3 iu tests 2019-08-13 23:52:31 +02:00
msub.c msub_check_for_release(): Initialize msc_role_a_c 2019-05-09 08:42:48 +00:00
neighbor_ident.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
neighbor_ident_vty.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
paging.c libmsc/paging.c: cosmetic: remove leading space in log line 2019-06-16 00:22:13 +07:00
ran_conn.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
ran_infra.c rename bscconfig.h to config.h, cleanup 2019-05-08 17:02:32 +02:00
ran_msg.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
ran_msg_a.c Request Osmux CID and forward it in Assign Req and Assign Compl 2019-05-21 18:32:38 +02:00
ran_msg_iu.c libmsc/ran_msg_iu.c: fix: properly handle SAPI IE of RANAP_DirectTransfer 2019-06-20 16:54:45 +00:00
ran_peer.c Fix: add missing semicolons to OSMO_ASSERT statements 2019-07-09 07:13:45 +00:00
ran_up_l2.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
rrlp.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
rtp_stream.c Request Osmux CID and forward it in Assign Req and Assign Compl 2019-05-21 18:32:38 +02:00
sccp_ran.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
sgs_iface.c sgs_iface: do not use SGsAP-MO-CSFB-INDICATION for CSFB return 2019-08-16 08:59:06 +00:00
sgs_server.c libmsc/sgs_server.c: do not override rc in case of SCTP_SHUTDOWN_EVENT 2019-05-13 20:15:04 +00:00
sgs_vty.c libmsc: fix: properly initialize the SGs server 2019-03-28 17:10:11 +07:00
silent_call.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
smpp_openbsc.c smpp_openbsc.c: check acl before deref it 2019-08-23 23:48:51 +02:00
smpp_smsc.c smpp_smsc: Call destroy_tlv() when using build_tlv() 2019-04-10 10:53:23 +00:00
smpp_smsc.h SMPP: Don't accept password or system-id exceeding spec length 2019-05-10 07:07:00 +00:00
smpp_utils.c dissolve libcommon: drop debug.c 2018-03-22 17:05:42 +01:00
smpp_vty.c Write configuration correctly from vty (alert notifications) 2019-03-29 22:48:38 +00:00
sms_queue.c sms_queue.c: Improve misleading log line 2019-06-20 10:45:37 +02:00
transaction.c cc trans: make sure bearer cap is empty 2019-08-29 04:58:49 +02:00