pespin has submitted this change and it was merged. ( 
https://gerrit.osmocom.org/c/libosmocore/+/14429 )

Change subject: logging: Use reentrant ctime_r instead of ctime
......................................................................

logging: Use reentrant ctime_r instead of ctime

It was noticed that multithreaded processes like osmo-trx can crash upon
using ctime().

Related: OS#4055
Change-Id: I19ebf29a2f1fc855bb7d56766b338c7c3432dfd1
---
M src/logging.c
1 file changed, 8 insertions(+), 5 deletions(-)

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



diff --git a/src/logging.c b/src/logging.c
index 4c86473..1c3544f 100644
--- a/src/logging.c
+++ b/src/logging.c
@@ -359,15 +359,18 @@
                        OSMO_SNPRINTF_RET(ret, rem, offset, len);
 #endif
                } else if (target->print_timestamp) {
-                       char *timestr;
                        time_t tm;
                        if ((tm = time(NULL)) == (time_t) -1)
                                goto err;
-                       timestr = ctime(&tm);
-                       timestr[strlen(timestr)-1] = '\0';
-                       ret = snprintf(buf + offset, rem, "%s ", timestr);
-                       if (ret < 0)
+                       /* Get human-readable representation of time.
+                          man ctime: we need at least 26 bytes in buf */
+                       if (rem < 26 || !ctime_r(&tm, buf + offset))
                                goto err;
+                       ret = strlen(buf + offset);
+                       if (ret <= 0)
+                               goto err;
+                       /* Get rid of useless final '\n' added by ctime_r. We 
want a space instead. */
+                       buf[offset + ret - 1] = ' ';
                        OSMO_SNPRINTF_RET(ret, rem, offset, len);
                }
                if (target->print_category) {

--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/14429
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I19ebf29a2f1fc855bb7d56766b338c7c3432dfd1
Gerrit-Change-Number: 14429
Gerrit-PatchSet: 4
Gerrit-Owner: pespin <pes...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <axilira...@gmail.com>
Gerrit-Reviewer: laforge <lafo...@gnumonks.org>
Gerrit-Reviewer: pespin <pes...@sysmocom.de>
Gerrit-MessageType: merged

Reply via email to