<p>Harald Welte has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/11399">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">don't use rsl_cause_name() in LOGP statements<br><br>rsl_cause_name() doesn't only return the name of the cause,<br>but also returns a pointer to the binary cause IE value.  If we<br>want to use that cause IE value, then we must not call rsl_cause_name()<br>from within a LOGP/DEBUGP statement, as this will only be executed<br>if the log level is high enough.<br><br>I actually believe the rsl_cause_name() should be side-effect free,<br>i.e. it should simply return a name and not also return a pointer<br>to the cause in an output pointer-pointer.  This way it's less easy<br>to fall into this trap.<br><br>Change-Id: I0ecabcd6435f3f74448d5d3350fe659d7df91a6d<br>Fixes: Coverity CID#188832, CID#188847<br>---<br>M src/osmo-bsc/abis_rsl.c<br>1 file changed, 6 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/99/11399/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c</span><br><span>index 589d673..2443bb5 100644</span><br><span>--- a/src/osmo-bsc/abis_rsl.c</span><br><span>+++ b/src/osmo-bsc/abis_rsl.c</span><br><span>@@ -861,6 +861,7 @@</span><br><span>  struct tlv_parsed tp;</span><br><span>        struct gsm_lchan *lchan = msg->lchan;</span><br><span>     const uint8_t *cause_p;</span><br><span style="color: hsl(120, 100%, 40%);">+       const char *cause_name;</span><br><span> </span><br><span>  rate_ctr_inc(&msg->lchan->ts->trx->bts->bts_ctrs->ctr[BTS_CTR_CHAN_ACT_NACK]);</span><br><span> </span><br><span>@@ -871,7 +872,8 @@</span><br><span>       }</span><br><span> </span><br><span>        rsl_tlv_parse(&tp, dh->data, msgb_l2len(msg)-sizeof(*dh));</span><br><span style="color: hsl(0, 100%, 40%);">-       LOG_LCHAN(lchan, LOGL_ERROR, "CHANNEL ACTIVATE NACK%s\n", rsl_cause_name(&tp, &cause_p));</span><br><span style="color: hsl(120, 100%, 40%);">+   cause_name = rsl_cause_name(&tp, &cause_p);</span><br><span style="color: hsl(120, 100%, 40%);">+   LOG_LCHAN(lchan, LOGL_ERROR, "CHANNEL ACTIVATE NACK%s\n", cause_name);</span><br><span> </span><br><span>         if (msg_for_osmocom_dyn_ts(msg))</span><br><span>             osmo_fsm_inst_dispatch(lchan->ts->fi, TS_EV_PDCH_ACT_NACK, (void*)cause_p);</span><br><span>@@ -887,10 +889,12 @@</span><br><span>    struct gsm_lchan *lchan = msg->lchan;</span><br><span>     struct tlv_parsed tp;</span><br><span>        const uint8_t *cause_p;</span><br><span style="color: hsl(120, 100%, 40%);">+       const char *cause_name;</span><br><span> </span><br><span>  rsl_tlv_parse(&tp, dh->data, msgb_l2len(msg)-sizeof(*dh));</span><br><span style="color: hsl(120, 100%, 40%);">+     cause_name = rsl_cause_name(&tp, &cause_p);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOG_LCHAN(lchan, LOGL_ERROR, "CONNECTION FAIL%s\n", rsl_cause_name(&tp, &cause_p));</span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_LCHAN(lchan, LOGL_ERROR, "CONNECTION FAIL%s\n", cause_name);</span><br><span> </span><br><span>       rate_ctr_inc(&lchan->ts->trx->bts->bts_ctrs->ctr[BTS_CTR_CHAN_RF_FAIL]);</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/11399">change 11399</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/11399"/><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-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I0ecabcd6435f3f74448d5d3350fe659d7df91a6d </div>
<div style="display:none"> Gerrit-Change-Number: 11399 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>