<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/18338">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, approved
  pespin: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Fix crash in bsc_patch_mm_info()<br><br>osmo-bsc has crashed with the following backtrace:<br><br>0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51<br>1  0x00007f0bc49b38db in __GI_abort () at abort.c:100<br>2  0x00007f0bc581ba30 in osmo_panic () from /usr/lib/x86_64-linux-gnu/libosmocore.so.12<br>3  0x00005648ceeced69 in conn_get_bts (conn=<optimized out>) at ../../include/osmocom/bsc/gsm_data.h:1392<br>4  0x00005648cef37164 in conn_get_bts (conn=0x5648cf769e80) at osmo_bsc_filter.c:87<br>5  bsc_patch_mm_info (conn=conn@entry=0x5648cf769e80, data=<optimized out>, length=<optimized out>) at osmo_bsc_filter.c:48<br>6  0x00005648cef371b6 in bsc_scan_msc_msg (conn=conn@entry=0x5648cf769e80, msg=msg@entry=0x5648cf77ead0) at osmo_bsc_filter.c:159<br>7  0x00005648cef33988 in dtap_rcvmsg (msg=0x5648cf72b2f0, length=40, conn=0x5648cf769e80) at osmo_bsc_bssap.c:1215<br>8  bsc_handle_dt (conn=conn@entry=0x5648cf769e80, msg=0x5648cf72b2f0, len=40) at osmo_bsc_bssap.c:1299<br>9  0x00005648cef3b2b7 in handle_data_from_msc (msg=<optimized out>, conn=0x5648cf769e80) at osmo_bsc_sigtran.c:152<br>10 sccp_sap_up (oph=0x5648cf72b378, _scu=<optimized out>) at osmo_bsc_sigtran.c:267<br>11 0x00007f0bc5813c03 in _osmo_fsm_inst_dispatch () from /usr/lib/x86_64-linux-gnu/libosmocore.so.12<br>12 0x00007f0bc51a8935 in sccp_scoc_rx_from_scrc (inst=inst@entry=0x5648cf6a8d60, xua=xua@entry=0x5648cf720150) at sccp_scoc.c:1695<br>13 0x00007f0bc51a62f3 in scrc_rx_mtp_xfer_ind_xua (inst=inst@entry=0x5648cf6a8d60, xua=xua@entry=0x5648cf720150) at sccp_scrc.c:459<br>14 0x00007f0bc51a9545 in mtp_user_prim_cb (oph=0x5648cf7681f8, ctx=0x5648cf6a8d60) at sccp_user.c:182<br>15 0x00007f0bc51a09c6 in m3ua_rx_xfer (xua=0x5648cf764a80, asp=0x5648cf45f540) at m3ua.c:586<br>16 m3ua_rx_msg (asp=asp@entry=0x5648cf45f540, msg=msg@entry=0x5648cf71e880) at m3ua.c:739<br>17 0x00007f0bc51b0763 in xua_cli_read_cb (conn=0x5648cf441ed0) at osmo_ss7.c:1761<br>18 0x00007f0bc55fab53 in osmo_stream_cli_read (cli=0x5648cf441ed0) at stream.c:232<br>19 osmo_stream_cli_fd_cb (ofd=<optimized out>, what=1) at stream.c:321<br>20 0x00007f0bc580edcf in ?? () from /usr/lib/x86_64-linux-gnu/libosmocore.so.12<br>21 0x00007f0bc580f526 in osmo_select_main_ctx () from /usr/lib/x86_64-linux-gnu/libosmocore.so.12<br>22 0x00005648ceecfb2f in main (argc=<optimized out>, argv=<optimized out>) at osmo_bsc_main.c:953<br><br>Apparently, there is no lchan allocated at this moment, so<br>conn_get_bts() crashes. But we only use it to get to "network" which<br>we can do much easier and safer by doing conn->network.<br><br>Change-Id: Id3f7b3efba60c0f050c1be98e5e539f1dab4cd57<br>---<br>M src/osmo-bsc/osmo_bsc_filter.c<br>M tests/bsc/bsc_test.c<br>2 files changed, 3 insertions(+), 11 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo-bsc/osmo_bsc_filter.c b/src/osmo-bsc/osmo_bsc_filter.c</span><br><span>index 332ba6b..3b72aee 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_filter.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_filter.c</span><br><span>@@ -45,7 +45,6 @@</span><br><span> {</span><br><span>      struct tlv_parsed tp;</span><br><span>        int parse_res;</span><br><span style="color: hsl(0, 100%, 40%);">-  struct gsm_bts *bts = conn_get_bts(conn);</span><br><span>    int tzunits;</span><br><span>         uint8_t tzbsd = 0;</span><br><span>   uint8_t dst = 0;</span><br><span>@@ -58,7 +57,7 @@</span><br><span>                 return 0;</span><br><span> </span><br><span>        /* Is TZ patching enabled? */</span><br><span style="color: hsl(0, 100%, 40%);">-   struct gsm_tz *tz = &bts->network->tz;</span><br><span style="color: hsl(120, 100%, 40%);">+      struct gsm_tz *tz = &conn->network->tz;</span><br><span>    if (!tz->override)</span><br><span>                return 0;</span><br><span> </span><br><span>diff --git a/tests/bsc/bsc_test.c b/tests/bsc/bsc_test.c</span><br><span>index 6079ec5..5d87118 100644</span><br><span>--- a/tests/bsc/bsc_test.c</span><br><span>+++ b/tests/bsc/bsc_test.c</span><br><span>@@ -123,16 +123,9 @@</span><br><span>    int i;</span><br><span> </span><br><span>   struct gsm_network *net = gsm_network_init(ctx);</span><br><span style="color: hsl(0, 100%, 40%);">-        struct gsm_bts *bts = gsm_bts_alloc(net, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-    struct bsc_msc_data *msc;</span><br><span style="color: hsl(0, 100%, 40%);">-       struct gsm_subscriber_connection *conn;</span><br><span style="color: hsl(120, 100%, 40%);">+       struct gsm_subscriber_connection *conn = talloc_zero(net, struct gsm_subscriber_connection);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        msc = talloc_zero(net, struct bsc_msc_data);</span><br><span style="color: hsl(0, 100%, 40%);">-    conn = talloc_zero(net, struct gsm_subscriber_connection);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      bts->network = net;</span><br><span style="color: hsl(0, 100%, 40%);">-  conn->sccp.msc = msc;</span><br><span style="color: hsl(0, 100%, 40%);">-        conn->lchan = &bts->c0->ts[1].lchan[0];</span><br><span style="color: hsl(120, 100%, 40%);">+  conn->network = net;</span><br><span> </span><br><span>  /* start testing with proper messages */</span><br><span>     printf("Testing BTS<->MSC message scan.\n");</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/18338">change 18338</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-bsc/+/18338"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Id3f7b3efba60c0f050c1be98e5e539f1dab4cd57 </div>
<div style="display:none"> Gerrit-Change-Number: 18338 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: ipse <Alexander.Chemeris@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>