<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/14429">View Change</a></p><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, 7 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/29/14429/1</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 73a9c52..b8960f9 100644</span><br><span>--- a/src/logging.c</span><br><span>+++ b/src/logging.c</span><br><span>@@ -359,12 +359,15 @@</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 style="color: hsl(120, 100%, 40%);">+                        /* man ctime: user-supplied buffer should have room for at least 26 bytes */</span><br><span style="color: hsl(120, 100%, 40%);">+                  char ctime_buf[26];</span><br><span>                  time_t tm;</span><br><span>                   tm = time(NULL);</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(120, 100%, 40%);">+                  if (!ctime_r(&tm, ctime_buf))</span><br><span style="color: hsl(120, 100%, 40%);">+                             goto err;</span><br><span style="color: hsl(120, 100%, 40%);">+                     /* Remove new line char atthe end added by ctime */</span><br><span style="color: hsl(120, 100%, 40%);">+                   ctime_buf[strlen(ctime_buf)-1] = '\0';</span><br><span style="color: hsl(120, 100%, 40%);">+                        ret = snprintf(buf + offset, rem, "%s ", ctime_buf);</span><br><span>                       if (ret < 0)</span><br><span>                              goto err;</span><br><span>                    OSMO_SNPRINTF_RET(ret, rem, offset, len);</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: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>