<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/17604">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  fixeria: Looks good to me, approved
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">logging: use LOGL_NOTICE when no loglevel is set<br><br>when the API user of libosmocores logging infrastructure does not set a<br>pre-defined logging level in struct log_info_cat, the result would be an<br>invalid logging level. In order to avoid problems with that and to spare<br>all the additional .loglevel = LOGL_NOTICE (API users are advised to use<br>LOGL_NOTICE as default) lines in the user code lets check the logging<br>level on startup and set LOGL_NOTICE if there is no logging level set.<br><br>Change-Id: Ib9e180261505062505fc4605a98023910f76cde6<br>Related: OS#2577<br>---<br>M src/logging.c<br>1 file changed, 17 insertions(+), 9 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/logging.c b/src/logging.c</span><br><span>index 4d6224d..4aaf515 100644</span><br><span>--- a/src/logging.c</span><br><span>+++ b/src/logging.c</span><br><span>@@ -1026,6 +1026,7 @@</span><br><span> int log_init(const struct log_info *inf, void *ctx)</span><br><span> {</span><br><span>     int i;</span><br><span style="color: hsl(120, 100%, 40%);">+        struct log_info_cat *cat_ptr;</span><br><span> </span><br><span>    tall_log_ctx = talloc_named_const(ctx, 1, "logging");</span><br><span>      if (!tall_log_ctx)</span><br><span>@@ -1043,29 +1044,36 @@</span><br><span>                 osmo_log_info->num_cat += inf->num_cat;</span><br><span>        }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   osmo_log_info->cat = talloc_zero_array(osmo_log_info,</span><br><span style="color: hsl(0, 100%, 40%);">-                                        struct log_info_cat,</span><br><span style="color: hsl(0, 100%, 40%);">-                                    osmo_log_info->num_cat);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (!osmo_log_info->cat) {</span><br><span style="color: hsl(120, 100%, 40%);">+ cat_ptr = talloc_zero_array(osmo_log_info, struct log_info_cat,</span><br><span style="color: hsl(120, 100%, 40%);">+                                   osmo_log_info->num_cat);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (!cat_ptr) {</span><br><span>              talloc_free(osmo_log_info);</span><br><span>          osmo_log_info = NULL;</span><br><span>                return -ENOMEM;</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (inf) { /* copy over the user part */</span><br><span style="color: hsl(120, 100%, 40%);">+      /* copy over the user part and sanitize loglevel */</span><br><span style="color: hsl(120, 100%, 40%);">+   if (inf) {</span><br><span>           for (i = 0; i < inf->num_cat; i++) {</span><br><span style="color: hsl(0, 100%, 40%);">-                      memcpy((struct log_info_cat *) &osmo_log_info->cat[i],</span><br><span style="color: hsl(0, 100%, 40%);">-                          &inf->cat[i], sizeof(struct log_info_cat));</span><br><span style="color: hsl(120, 100%, 40%);">+                     memcpy(&cat_ptr[i], &inf->cat[i],</span><br><span style="color: hsl(120, 100%, 40%);">+                         sizeof(struct log_info_cat));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                        /* Make sure that the loglevel is set to NOTICE in case</span><br><span style="color: hsl(120, 100%, 40%);">+                        * no loglevel has been preset. */</span><br><span style="color: hsl(120, 100%, 40%);">+                    if (!cat_ptr[i].loglevel) {</span><br><span style="color: hsl(120, 100%, 40%);">+                           cat_ptr[i].loglevel = LOGL_NOTICE;</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span>            }</span><br><span>    }</span><br><span> </span><br><span>        /* copy over the library part */</span><br><span>     for (i = 0; i < ARRAY_SIZE(internal_cat); i++) {</span><br><span>          unsigned int cn = osmo_log_info->num_cat_user + i;</span><br><span style="color: hsl(0, 100%, 40%);">-           memcpy((struct log_info_cat *) &osmo_log_info->cat[cn],</span><br><span style="color: hsl(0, 100%, 40%);">-                  &internal_cat[i], sizeof(struct log_info_cat));</span><br><span style="color: hsl(120, 100%, 40%);">+           memcpy(&cat_ptr[cn], &internal_cat[i], sizeof(struct log_info_cat));</span><br><span>         }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_log_info->cat = cat_ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>   return 0;</span><br><span> }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/17604">change 17604</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/libosmocore/+/17604"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ib9e180261505062505fc4605a98023910f76cde6 </div>
<div style="display:none"> Gerrit-Change-Number: 17604 </div>
<div style="display:none"> Gerrit-PatchSet: 8 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@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 <axilirator@gmail.com> </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>