diff options
author | David Baker <dave@matrix.org> | 2019-10-04 11:43:40 +0100 |
---|---|---|
committer | David Baker <dave@matrix.org> | 2019-10-04 11:43:40 +0100 |
commit | b482321213e6e896d0981c266bed12f4e1f67441 (patch) | |
tree | ea8decd8eb2187ee049a2a3587ee28a2730c25fe /src | |
parent | e73a208fb2b70fb5d195a74956f22ea6557d361f (diff) |
Pass in a buffer to olm_session_describe
instead of having a static one, as that could end up taking up a
lot of memory if your app keeps olm sessions hanging about.
Diffstat (limited to 'src')
-rw-r--r-- | src/olm.cpp | 6 | ||||
-rw-r--r-- | src/session.cpp | 16 |
2 files changed, 11 insertions, 11 deletions
diff --git a/src/olm.cpp b/src/olm.cpp index 65e506d..0333b10 100644 --- a/src/olm.cpp +++ b/src/olm.cpp @@ -535,10 +535,10 @@ int olm_session_has_received_message( return from_c(session)->received_message; } -const char * olm_session_describe( - OlmSession * session +void olm_session_describe( + OlmSession * session, char *buf, size_t buflen ) { - return from_c(session)->describe(); + from_c(session)->describe(buf, buflen); } size_t olm_matches_inbound_session( diff --git a/src/session.cpp b/src/session.cpp index bad19de..d6761d5 100644 --- a/src/session.cpp +++ b/src/session.cpp @@ -398,32 +398,32 @@ std::size_t olm::Session::decrypt( return result; } -const char * olm::Session::describe() { +void olm::Session::describe(char *describe_buffer, size_t buflen) { + if (buflen == 0) return; + describe_buffer[0] = '\0'; char *buf_pos = describe_buffer; buf_pos += snprintf( - buf_pos, DESCRIBE_BUFFER_LEN - (buf_pos - describe_buffer), + buf_pos, buflen - (buf_pos - describe_buffer), "sender chain index: %d ", ratchet.sender_chain[0].chain_key.index ); - buf_pos += snprintf(buf_pos, DESCRIBE_BUFFER_LEN - (buf_pos - describe_buffer), "receiver chain indcies:"); + buf_pos += snprintf(buf_pos, buflen - (buf_pos - describe_buffer), "receiver chain indcies:"); for (size_t i = 0; i < ratchet.receiver_chains.size(); ++i) { buf_pos += snprintf( - buf_pos, DESCRIBE_BUFFER_LEN - (buf_pos - describe_buffer), + buf_pos, buflen - (buf_pos - describe_buffer), " %d", ratchet.receiver_chains[i].chain_key.index ); } - buf_pos += snprintf(buf_pos, DESCRIBE_BUFFER_LEN - (buf_pos - describe_buffer), " skipped message keys:"); + buf_pos += snprintf(buf_pos, buflen - (buf_pos - describe_buffer), " skipped message keys:"); for (size_t i = 0; i < ratchet.skipped_message_keys.size(); ++i) { buf_pos += snprintf( - buf_pos, DESCRIBE_BUFFER_LEN - (buf_pos - describe_buffer), + buf_pos, buflen - (buf_pos - describe_buffer), " %d", ratchet.skipped_message_keys[i].message_key.index ); } - - return describe_buffer; } namespace { |