diff --git a/src/sip/sdp.cpp b/src/sip/sdp.cpp index 21949a05aca07306d359cc2e2e1a31603efc2551..b4914c744b03ade26173c9768bdb04d06e3e3439 100644 --- a/src/sip/sdp.cpp +++ b/src/sip/sdp.cpp @@ -327,7 +327,7 @@ void Sdp::setLocalMediaAudioCapabilities(const std::vector<std::shared_ptr<Accou void Sdp::printSession(const pjmedia_sdp_session *session, const char* header) { - static constexpr size_t BUF_SZ = 4096; + static constexpr size_t BUF_SZ = 4095; std::unique_ptr<pj_pool_t, decltype(pj_pool_release)&> tmpPool_( pj_pool_create(&getSIPVoIPLink()->getCachingPool()->factory, "printSdp", BUF_SZ, BUF_SZ, nullptr), pj_pool_release @@ -344,14 +344,14 @@ Sdp::printSession(const pjmedia_sdp_session *session, const char* header) pjmedia_sdp_media_remove_all_attr(cloned_session->media[i], "crypto"); } - std::array<char, BUF_SZ> buffer; - auto size = pjmedia_sdp_print(cloned_session, buffer.data(), buffer.size()); + std::array<char, BUF_SZ+1> buffer; + auto size = pjmedia_sdp_print(cloned_session, buffer.data(), BUF_SZ); if (size < 0) { RING_ERR("%sSDP too big for dump", header); return; } - - RING_DBG("%s%s", header, buffer.data()); + buffer[size] = '\0'; + RING_DBG("%s%s", header, &buffer[0]); } int Sdp::createLocalSession(const std::vector<std::shared_ptr<AccountCodecInfo>>& selectedAudioCodecs,