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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">vty: Avoid crash in tbf_print_vty_info with null ptr ctrg<br><br>Previous code did use a ctrg based on MS being EGPRS capable or not.<br>However, an MS being EGPRS capable doesn't mean necessarily that all its<br>TBFs are EGPRS, since we may known about the capability after we already<br>created some previous TBF, so it was not ugpraded. Hence, we were<br>sometimes accessing the wrong NULL ctrg.<br>Let's simply check for non NULL ctrg when deciding what to print.<br><br>"""<br>Program received signal SIGSEGV, Segmentation fault.<br>0x00007ffff7561ea6 in vty_out_rate_ctr_group (vty=vty@entry=0x897850, prefix=prefix@entry=0x4482cd " ", ctrg=0x0) at utils.c:82<br>82    utils.c: No such file or directory.<br>(gdb) bt<br> #0  0x00007ffff7561ea6 in vty_out_rate_ctr_group (vty=vty@entry=0x897850, prefix=prefix@entry=0x4482cd " ", ctrg=0x0) at utils.c:82<br> #1  0x000000000041437b in tbf_print_vty_info (vty=vty@entry=0x897850, tbf=0x3fb61f0) at pcu_vty_functions.cpp:98<br> #2  0x0000000000414acc in pcu_vty_show_tbf_all (vty=vty@entry=0x897850, bts=bts@entry=0x7be650, flags=4294967295) at pcu_vty_functions.cpp:127<br> #3  0x000000000041206f in show_tbf (self=<optimized out>, vty=0x897850, argc=<optimized out>, argv=0x7fffffffe040) at pcu_vty.c:1150<br> #4  0x00007ffff755d167 in cmd_execute_command_real (vline=vline@entry=0x7bc300, vty=vty@entry=0x897850, cmd=<optimized out>) at command.c:2604<br>"""<br><br>Related: SYS#5689<br>Change-Id: I3979bfc12dd3b9a53b34b284537f271c356a3024<br>---<br>M src/pcu_vty_functions.cpp<br>1 file changed, 4 insertions(+), 6 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/pcu_vty_functions.cpp b/src/pcu_vty_functions.cpp</span><br><span>index 657e5a1..21851df 100644</span><br><span>--- a/src/pcu_vty_functions.cpp</span><br><span>+++ b/src/pcu_vty_functions.cpp</span><br><span>@@ -79,11 +79,10 @@</span><br><span>                    ul_tbf->window_size(), win->v_q(), win->v_r());</span><br><span>             vty_out(vty, "%s", VTY_NEWLINE);</span><br><span>           vty_out(vty, " TBF Statistics:%s", VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-              if (GPRS == ms_mode(tbf->ms())) {</span><br><span style="color: hsl(120, 100%, 40%);">+          if (ul_tbf->m_ul_gprs_ctrs)</span><br><span>                       vty_out_rate_ctr_group(vty, " ", ul_tbf->m_ul_gprs_ctrs);</span><br><span style="color: hsl(0, 100%, 40%);">-          } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              if (ul_tbf->m_ul_egprs_ctrs)</span><br><span>                      vty_out_rate_ctr_group(vty, " ", ul_tbf->m_ul_egprs_ctrs);</span><br><span style="color: hsl(0, 100%, 40%);">-         }</span><br><span>    }</span><br><span>    if (dl_tbf) {</span><br><span>                gprs_rlc_dl_window *win = static_cast<gprs_rlc_dl_window *>(dl_tbf->window());</span><br><span>@@ -92,11 +91,10 @@</span><br><span>                        win->window_stalled() ? " STALLED" : "");</span><br><span>             vty_out(vty, "%s", VTY_NEWLINE);</span><br><span>           vty_out_rate_ctr_group(vty, " ", tbf->m_ctrs);</span><br><span style="color: hsl(0, 100%, 40%);">-             if (GPRS == ms_mode(tbf->ms())) {</span><br><span style="color: hsl(120, 100%, 40%);">+          if (dl_tbf->m_dl_gprs_ctrs)</span><br><span>                       vty_out_rate_ctr_group(vty, " ", dl_tbf->m_dl_gprs_ctrs);</span><br><span style="color: hsl(0, 100%, 40%);">-          } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              if (dl_tbf->m_dl_egprs_ctrs)</span><br><span>                      vty_out_rate_ctr_group(vty, " ", dl_tbf->m_dl_egprs_ctrs);</span><br><span style="color: hsl(0, 100%, 40%);">-         }</span><br><span>    }</span><br><span>    vty_out(vty, "%s%s", VTY_NEWLINE, VTY_NEWLINE);</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/26121">change 26121</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-pcu/+/26121"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I3979bfc12dd3b9a53b34b284537f271c356a3024 </div>
<div style="display:none"> Gerrit-Change-Number: 26121 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>