From 63ccf0df5269c7824408e217f67e1b679d67dfcc Mon Sep 17 00:00:00 2001 From: Michel Promonet Date: Sun, 24 Mar 2024 16:43:35 +0100 Subject: [PATCH] include live555 patch --- CMakeLists.txt | 8 +++++++- patches/001_live555_sprintf_format | 25 +++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 patches/001_live555_sprintf_format diff --git a/CMakeLists.txt b/CMakeLists.txt index 2035c70..e0d316a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,10 +81,16 @@ else() set(LIVEINCLUDE ${LIVE}/groupsock/include ${LIVE}/liveMedia/include ${LIVE}/UsageEnvironment/include ${LIVE}/BasicUsageEnvironment/include) if (NOT EXISTS ${LIVE}) file (DOWNLOAD ${LIVE555URL} ${CMAKE_BINARY_DIR}/live555-latest.tar.gz ) - EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E tar xvf ${CMAKE_BINARY_DIR}/live555-latest.tar.gz RESULT_VARIABLE unpack_result) + message(STATUS "extract live555") + EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E tar xf ${CMAKE_BINARY_DIR}/live555-latest.tar.gz RESULT_VARIABLE unpack_result) if(NOT unpack_result STREQUAL "0") message(FATAL_ERROR "Fetching and compiling live555 failed!") endif() + message(STATUS "patch live555") + EXECUTE_PROCESS(COMMAND patch -d ${CMAKE_BINARY_DIR} -f -p 1 -i ${CMAKE_SOURCE_DIR}/patches/001_live555_sprintf_format RESULT_VARIABLE patch_result) + if(NOT patch_result STREQUAL "0") + message(FATAL_ERROR "Patching live555 failed!") + endif() endif() FILE(GLOB LIVESOURCE ${LIVE}/groupsock/*.c* ${LIVE}/liveMedia/*.c* ${LIVE}/UsageEnvironment/*.c* ${LIVE}/BasicUsageEnvironment/*.c*) if (NOT OpenSSL_FOUND) diff --git a/patches/001_live555_sprintf_format b/patches/001_live555_sprintf_format new file mode 100644 index 0000000..a79e4d5 --- /dev/null +++ b/patches/001_live555_sprintf_format @@ -0,0 +1,25 @@ +From: Michel Promonet +Subject: [PATCH] Fix crash formating time_t as long (it is a long long) +Signed-off-by: Michel Promonet + +--- +--- a/live/liveMedia/ServerMediaSession.cpp ++++ b/live/liveMedia/ServerMediaSession.cpp +@@ -272,7 +272,7 @@ char* ServerMediaSession::generateSDPDes + + char const* const sdpPrefixFmt = + "v=0\r\n" +- "o=- %ld%06ld %d IN %s %s\r\n" ++ "o=- %lld%06lld %d IN %s %s\r\n" + "s=%s\r\n" + "i=%s\r\n" + "t=0 0\r\n" +@@ -300,7 +300,7 @@ char* ServerMediaSession::generateSDPDes + + // Generate the SDP prefix (session-level lines): + snprintf(sdp, sdpLength, sdpPrefixFmt, +- fCreationTime.tv_sec, fCreationTime.tv_usec, // o= ++ (long long)fCreationTime.tv_sec, (long long)fCreationTime.tv_usec, // o= + 1, // o= // (needs to change if params are modified) + addressFamily == AF_INET ? "IP4" : "IP6", // o=
+ ipAddressStr.val(), // o=