aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/olm/olm.h4
-rw-r--r--src/session.cpp17
2 files changed, 14 insertions, 7 deletions
diff --git a/include/olm/olm.h b/include/olm/olm.h
index a0ef46a..6a2b3fb 100644
--- a/include/olm/olm.h
+++ b/include/olm/olm.h
@@ -319,8 +319,8 @@ int olm_session_has_received_message(
);
/**
- * Write a string describing the internal state of an olm session
- * to the buffer provided for debugging and logging purposes.
+ * Write a null-terminated string describing the internal state of an olm
+ * session to the buffer provided for debugging and logging purposes.
*/
void olm_session_describe(OlmSession * session, char *buf, size_t buflen);
diff --git a/src/session.cpp b/src/session.cpp
index d6761d5..b619e56 100644
--- a/src/session.cpp
+++ b/src/session.cpp
@@ -404,25 +404,32 @@ void olm::Session::describe(char *describe_buffer, size_t buflen) {
describe_buffer[0] = '\0';
char *buf_pos = describe_buffer;
- buf_pos += snprintf(
+ int size;
+
+ size = snprintf(
buf_pos, buflen - (buf_pos - describe_buffer),
"sender chain index: %d ", ratchet.sender_chain[0].chain_key.index
);
+ if (size > 0) buf_pos += size;
- buf_pos += snprintf(buf_pos, buflen - (buf_pos - describe_buffer), "receiver chain indcies:");
+ size = snprintf(buf_pos, buflen - (buf_pos - describe_buffer), "receiver chain indices:");
+ if (size > 0) buf_pos += size;
for (size_t i = 0; i < ratchet.receiver_chains.size(); ++i) {
- buf_pos += snprintf(
+ size = snprintf(
buf_pos, buflen - (buf_pos - describe_buffer),
" %d", ratchet.receiver_chains[i].chain_key.index
);
+ if (size > 0) buf_pos += size;
}
- buf_pos += snprintf(buf_pos, buflen - (buf_pos - describe_buffer), " skipped message keys:");
+ size = snprintf(buf_pos, buflen - (buf_pos - describe_buffer), " skipped message keys:");
+ if (size >= 0) buf_pos += size;
for (size_t i = 0; i < ratchet.skipped_message_keys.size(); ++i) {
- buf_pos += snprintf(
+ size = snprintf(
buf_pos, buflen - (buf_pos - describe_buffer),
" %d", ratchet.skipped_message_keys[i].message_key.index
);
+ if (size > 0) buf_pos += size;
}
}