From 4be1daa60c5ced53eff223901eaf68da2985f28a Mon Sep 17 00:00:00 2001 From: Thulinma Date: Sun, 28 Oct 2018 12:44:40 +0100 Subject: [PATCH] Fixed TS-output (=HLS) related SIGABRT problem --- src/output/output_ts_base.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/output/output_ts_base.cpp b/src/output/output_ts_base.cpp index a8b76e74..460fb7fc 100644 --- a/src/output/output_ts_base.cpp +++ b/src/output/output_ts_base.cpp @@ -1,4 +1,5 @@ #include "output_ts_base.h" +#include namespace Mist { TSOutput::TSOutput(Socket::Connection & conn) : TS_BASECLASS(conn){ @@ -47,7 +48,7 @@ namespace Mist { } } - int tmp = packData.fillFree(data, dataLen); + size_t tmp = packData.fillFree(data, dataLen); data += tmp; dataLen -= tmp; } while(dataLen); @@ -66,8 +67,9 @@ namespace Mist { firstPack = true; char * dataPointer = 0; - unsigned int dataLen = 0; - thisPacket.getString("data", dataPointer, dataLen); //data + unsigned int tmpDataLen = 0; + thisPacket.getString("data", dataPointer, tmpDataLen); //data + uint64_t dataLen = tmpDataLen; //apple compatibility timestamp correction if (appleCompat){ packTime -= ts_from; @@ -105,7 +107,7 @@ namespace Mist { unsigned int watKunnenWeIn1Ding = 65490-13; unsigned int splitCount = (dataLen+extraSize) / watKunnenWeIn1Ding; unsigned int currPack = 0; - unsigned int ThisNaluSize = 0; + uint64_t ThisNaluSize = 0; unsigned int i = 0; unsigned int nalLead = 0; uint64_t offset = thisPacket.getInt("offset") * 90; @@ -147,9 +149,9 @@ namespace Mist { nalLead = 0; } if (!ThisNaluSize){ - ThisNaluSize = (dataPointer[i] << 24) + (dataPointer[i+1] << 16) + (dataPointer[i+2] << 8) + dataPointer[i+3]; - if (ThisNaluSize + i + 4 > (unsigned int)dataLen){ - DEBUG_MSG(DLVL_WARN, "Too big NALU detected (%u > %d) - skipping!", ThisNaluSize + i + 4, dataLen); + ThisNaluSize = Bit::btohl(dataPointer + i); + if (ThisNaluSize + i + 4 > dataLen){ + WARN_MSG("Too big NALU detected (%" PRIu64 " > %" PRIu64 ") - skipping!", ThisNaluSize + i + 4, dataLen); break; } if (alreadySent + 4 > watKunnenWeIn1Ding){