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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">logging: Use reentrant ctime_r instead of ctime<br><br>It was noticed that multithreaded processes like osmo-trx can crash upon<br>using ctime().<br><br>Related: OS#4055<br>Change-Id: I19ebf29a2f1fc855bb7d56766b338c7c3432dfd1<br>---<br>M src/logging.c<br>1 file changed, 8 insertions(+), 5 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 4c86473..1c3544f 100644</span><br><span>--- a/src/logging.c</span><br><span>+++ b/src/logging.c</span><br><span>@@ -359,15 +359,18 @@</span><br><span>                       OSMO_SNPRINTF_RET(ret, rem, offset, len);</span><br><span> #endif</span><br><span>          } else if (target->print_timestamp) {</span><br><span style="color: hsl(0, 100%, 40%);">-                        char *timestr;</span><br><span>                       time_t tm;</span><br><span>                   if ((tm = time(NULL)) == (time_t) -1)</span><br><span>                                goto err;</span><br><span style="color: hsl(0, 100%, 40%);">-                       timestr = ctime(&tm);</span><br><span style="color: hsl(0, 100%, 40%);">-                       timestr[strlen(timestr)-1] = '\0';</span><br><span style="color: hsl(0, 100%, 40%);">-                      ret = snprintf(buf + offset, rem, "%s ", timestr);</span><br><span style="color: hsl(0, 100%, 40%);">-                    if (ret < 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                       /* Get human-readable representation of time.</span><br><span style="color: hsl(120, 100%, 40%);">+                    man ctime: we need at least 26 bytes in buf */</span><br><span style="color: hsl(120, 100%, 40%);">+                     if (rem < 26 || !ctime_r(&tm, buf + offset))</span><br><span>                          goto err;</span><br><span style="color: hsl(120, 100%, 40%);">+                     ret = strlen(buf + offset);</span><br><span style="color: hsl(120, 100%, 40%);">+                   if (ret <= 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                              goto err;</span><br><span style="color: hsl(120, 100%, 40%);">+                     /* Get rid of useless final '\n' added by ctime_r. We want a space instead. */</span><br><span style="color: hsl(120, 100%, 40%);">+                        buf[offset + ret - 1] = ' ';</span><br><span>                         OSMO_SNPRINTF_RET(ret, rem, offset, len);</span><br><span>            }</span><br><span>            if (target->print_category) {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/14429">change 14429</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/+/14429"/><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: I19ebf29a2f1fc855bb7d56766b338c7c3432dfd1 </div>
<div style="display:none"> Gerrit-Change-Number: 14429 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </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: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>