<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/24953">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Make gcc 11.1.0 false positivies happy<br><br>After my system's gcc was upgraded, I get false positivies like the one<br>below:<br>"""<br>/git/osmo-pcu/src/gprs_bssgp_pcu.c: In function ‘ns_configure_nse’:<br>/git/osmo-pcu/src/gprs_bssgp_pcu.c:1103:58: error: ‘%d’ directive output may be truncated writing between 1 and 11 bytes into a region of size 2 [-Werror=format-truncation=]<br> 1103 |                         snprintf(name, sizeof(name), "pcu%d", i);<br>      |                                                          ^~<br>/git/osmo-pcu/src/gprs_bssgp_pcu.c:1103:54: note: directive argument in the range [-2147483648, 1]<br> 1103 |                         snprintf(name, sizeof(name), "pcu%d", i);<br>      |                                                      ^~~~~~~<br>/git/osmo-pcu/src/gprs_bssgp_pcu.c:1103:25: note: ‘snprintf’ output between 5 and 15 bytes into a destination of size 5<br> 1103 |                         snprintf(name, sizeof(name), "pcu%d", i);<br>      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>"""<br>In this case, i can't never take a value with more than 1 digit, but gcc<br>seems to be unable to see that.<br><br>Let's increase the buffer size a few bytes to make gcc happy, and make<br>the variable unsigned since it never will get negative values.<br><br>Next change is also a false positive, since variables are always<br>initialized beforehand in the cod epaths where they are used:<br>"""<br>/git/osmo-pcu/src/bts.cpp: In function ‘int bts_rcv_rach(gprs_rlcmac_bts*, const rach_ind_params*)’:<br>/git/osmo-pcu/src/bts.cpp:859:25: error: ‘ts_no’ may be used uninitialized in this function [-Werror=maybe-uninitialized]<br>  859 |         uint8_t trx_no, ts_no;<br>      |                         ^~~~~<br>/git/osmo-pcu/src/bts.cpp:859:17: error: ‘trx_no’ may be used uninitialized in this function [-Werror=maybe-uninitialized]<br>  859 |         uint8_t trx_no, ts_no;<br>      |                 ^~~~~~<br>"""<br><br>Change-Id: I1362a335a0c761bde367dbc779de4afa88f13584<br>---<br>M src/bts.cpp<br>M src/gprs_bssgp_pcu.c<br>2 files changed, 5 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/53/24953/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/bts.cpp b/src/bts.cpp</span><br><span>index 95dde04..ee6b915 100644</span><br><span>--- a/src/bts.cpp</span><br><span>+++ b/src/bts.cpp</span><br><span>@@ -856,7 +856,7 @@</span><br><span>        struct chan_req_params chan_req = { 0 };</span><br><span>     struct gprs_rlcmac_ul_tbf *tbf = NULL;</span><br><span>       struct gprs_rlcmac_sba *sba;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t trx_no, ts_no;</span><br><span style="color: hsl(120, 100%, 40%);">+        uint8_t trx_no = 0, ts_no = 0; /* initialize to avoid uninitialized false warnings on some gcc versions (11.1.0) */</span><br><span>  uint32_t sb_fn = 0;</span><br><span>  uint8_t usf = 7;</span><br><span>     uint8_t tsc = 0;</span><br><span>diff --git a/src/gprs_bssgp_pcu.c b/src/gprs_bssgp_pcu.c</span><br><span>index 0e8e145..e2f6f51 100644</span><br><span>--- a/src/gprs_bssgp_pcu.c</span><br><span>+++ b/src/gprs_bssgp_pcu.c</span><br><span>@@ -1075,12 +1075,13 @@</span><br><span>                          const uint16_t *nsvci,</span><br><span>                       uint16_t valid)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        int i, rc;</span><br><span style="color: hsl(120, 100%, 40%);">+    unsigned int i;</span><br><span style="color: hsl(120, 100%, 40%);">+       int rc;</span><br><span>      uint16_t binds = 0;</span><br><span>  bool nsvcs = false;</span><br><span>  struct gprs_ns2_vc *nsvc;</span><br><span>    struct gprs_ns2_vc_bind *bind[PCU_IF_NUM_NSVC] = { };</span><br><span style="color: hsl(0, 100%, 40%);">-   char name[5];</span><br><span style="color: hsl(120, 100%, 40%);">+ char name[16];</span><br><span>       bool sns_configured = false;</span><br><span> </span><br><span>     if (!valid)</span><br><span>@@ -1100,7 +1101,7 @@</span><br><span>                  continue;</span><br><span> </span><br><span>                if (!gprs_ns2_ip_bind_by_sockaddr(the_pcu->nsi, &local[i])) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    snprintf(name, sizeof(name), "pcu%d", i);</span><br><span style="color: hsl(120, 100%, 40%);">+                   snprintf(name, sizeof(name), "pcu%u", i);</span><br><span>                  rc = gprs_ns2_ip_bind(the_pcu->nsi, name, &local[i], 0, &bind[i]);</span><br><span>                        if (rc < 0) {</span><br><span>                             LOGP(DBSSGP, LOGL_ERROR, "Failed to bind to %s\n", osmo_sockaddr_to_str(&local[i]));</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/24953">change 24953</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/+/24953"/><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: I1362a335a0c761bde367dbc779de4afa88f13584 </div>
<div style="display:none"> Gerrit-Change-Number: 24953 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>