Attached is a patch for live555 to avoid usage of `gmtime`, which is not
guaranteed to return a pointer to data in thread-local storage, so could
race with other threads. Unfortunately, there is no cross-platform
replacement, so this adds an ifdef to call the corresponding threadsafe
alternatives.
Thank you for considering the patch!
Russell Greene
SHOTOVER Systems
--
diff --git a/liveMedia/RTSPCommon.cpp b/liveMedia/RTSPCommon.cpp
index bab17f9..47efe95 100644
--- a/liveMedia/RTSPCommon.cpp
+++ b/liveMedia/RTSPCommon.cpp
@@ -355,7 +355,17 @@ char const* dateHeader() {
static char buf[200];
#if !defined(_WIN32_WCE)
time_t tt = time(NULL);
- strftime(buf, sizeof buf, "Date: %a, %b %d %Y %H:%M:%S GMT\r\n", gmtime(&tt));
+ tm time_tm;
+#ifdef _WIN32
+ if (gmtime_s(&time_tm, &tt) != 0) {
+ time_tm = tm{};
+ }
+#else
+ if (gmtime_r(&tt, &time_tm) == nullptr) {
+ time_tm = tm{};
+ }
+#endif
+ strftime(buf, sizeof buf, "Date: %a, %b %d %Y %H:%M:%S GMT\r\n", &time_tm);
#else
// WinCE apparently doesn't have "time()", "strftime()", or "gmtime()",
// so generate the "Date:" header a different, WinCE-specific way.
_______________________________________________
live-devel mailing list
[email protected]
http://lists.live555.com/mailman/listinfo/live-devel