diff --git a/src/pickle_encoding.c b/src/pickle_encoding.c
index 5d5f8d73c2a431472f528528c22af03d0149cdda..a56e9e3066953bbba01da26b6341d4ad69ffa537 100644
--- a/src/pickle_encoding.c
+++ b/src/pickle_encoding.c
@@ -60,7 +60,7 @@ size_t _olm_enc_output(
         raw_output, length
     );
     _olm_encode_base64(raw_output, length, output);
-    return raw_length;
+    return base64_length;
 }
 
 
diff --git a/tests/test_group_session.cpp b/tests/test_group_session.cpp
index df46f0ea4aa8ecf48c47d9905691b0322ab6a5a1..ad67adb277ec96b0aa05bd68c5b65f32cf5f6f9e 100644
--- a/tests/test_group_session.cpp
+++ b/tests/test_group_session.cpp
@@ -28,23 +28,26 @@ int main() {
 
     size_t pickle_length = olm_pickle_outbound_group_session_length(session);
     uint8_t pickle1[pickle_length];
-    olm_pickle_outbound_group_session(session,
-                                      "secret_key", 10,
-                                      pickle1, pickle_length);
+    size_t res = olm_pickle_outbound_group_session(
+        session, "secret_key", 10, pickle1, pickle_length
+    );
+    assert_equals(pickle_length, res);
+
     uint8_t pickle2[pickle_length];
     memcpy(pickle2, pickle1, pickle_length);
 
     uint8_t buffer2[size];
     OlmOutboundGroupSession *session2 = olm_outbound_group_session(buffer2);
-    size_t res = olm_unpickle_outbound_group_session(session2,
-                                                     "secret_key", 10,
-                                                     pickle2, pickle_length);
+    res = olm_unpickle_outbound_group_session(
+        session2, "secret_key", 10, pickle2, pickle_length
+    );
     assert_not_equals((size_t)-1, res);
     assert_equals(pickle_length,
                   olm_pickle_outbound_group_session_length(session2));
-    olm_pickle_outbound_group_session(session2,
-                                      "secret_key", 10,
-                                      pickle2, pickle_length);
+    res = olm_pickle_outbound_group_session(
+        session2, "secret_key", 10, pickle2, pickle_length
+    );
+    assert_equals(pickle_length, res);
 
     assert_equals(pickle1, pickle2, pickle_length);
 }
@@ -59,23 +62,25 @@ int main() {
 
     size_t pickle_length = olm_pickle_inbound_group_session_length(session);
     uint8_t pickle1[pickle_length];
-    olm_pickle_inbound_group_session(session,
-                                     "secret_key", 10,
-                                     pickle1, pickle_length);
+    size_t res = olm_pickle_inbound_group_session(
+        session, "secret_key", 10, pickle1, pickle_length
+    );
+    assert_equals(pickle_length, res);
+
     uint8_t pickle2[pickle_length];
     memcpy(pickle2, pickle1, pickle_length);
 
     uint8_t buffer2[size];
     OlmInboundGroupSession *session2 = olm_inbound_group_session(buffer2);
-    size_t res = olm_unpickle_inbound_group_session(session2,
-                                                    "secret_key", 10,
-                                                    pickle2, pickle_length);
+    res = olm_unpickle_inbound_group_session(
+        session2, "secret_key", 10, pickle2, pickle_length
+    );
     assert_not_equals((size_t)-1, res);
     assert_equals(pickle_length,
                   olm_pickle_inbound_group_session_length(session2));
-    olm_pickle_inbound_group_session(session2,
-                                      "secret_key", 10,
-                                      pickle2, pickle_length);
+    res = olm_pickle_inbound_group_session(
+        session2, "secret_key", 10, pickle2, pickle_length
+    );
 
     assert_equals(pickle1, pickle2, pickle_length);
 }
diff --git a/tests/test_olm.cpp b/tests/test_olm.cpp
index af2c9f7ee66804be2bbbfd2b06049c9acac8bf9a..4619558ec762a3a7133822a948f17cf66cfc36f3 100644
--- a/tests/test_olm.cpp
+++ b/tests/test_olm.cpp
@@ -49,7 +49,9 @@ mock_random(ot_random, sizeof(ot_random));
 
 std::size_t pickle_length = ::olm_pickle_account_length(account);
 std::uint8_t pickle1[pickle_length];
-::olm_pickle_account(account, "secret_key", 10, pickle1, pickle_length);
+std::size_t res = ::olm_pickle_account(account, "secret_key", 10, pickle1, pickle_length);
+assert_equals(pickle_length, res);
+
 std::uint8_t pickle2[pickle_length];
 std::memcpy(pickle2, pickle1, pickle_length);
 
@@ -59,10 +61,10 @@ assert_not_equals(std::size_t(-1), ::olm_unpickle_account(
     account2, "secret_key", 10, pickle2, pickle_length
 ));
 assert_equals(pickle_length, ::olm_pickle_account_length(account2));
-::olm_pickle_account(account2, "secret_key", 10, pickle2, pickle_length);
+res = ::olm_pickle_account(account2, "secret_key", 10, pickle2, pickle_length);
+assert_equals(pickle_length, res);
 
 assert_equals(pickle1, pickle2, pickle_length);
-
 }
 
 
@@ -122,7 +124,9 @@ mock_random(random2, sizeof(random2));
 
 std::size_t pickle_length = ::olm_pickle_session_length(session);
 std::uint8_t pickle1[pickle_length];
-::olm_pickle_session(session, "secret_key", 10, pickle1, pickle_length);
+std::size_t res = ::olm_pickle_session(session, "secret_key", 10, pickle1, pickle_length);
+assert_equals(pickle_length, res);
+
 std::uint8_t pickle2[pickle_length];
 std::memcpy(pickle2, pickle1, pickle_length);
 
@@ -132,10 +136,10 @@ assert_not_equals(std::size_t(-1), ::olm_unpickle_session(
     session2, "secret_key", 10, pickle2, pickle_length
 ));
 assert_equals(pickle_length, ::olm_pickle_session_length(session2));
-::olm_pickle_session(session2, "secret_key", 10, pickle2, pickle_length);
+res = ::olm_pickle_session(session2, "secret_key", 10, pickle2, pickle_length);
+assert_equals(pickle_length, res);
 
 assert_equals(pickle1, pickle2, pickle_length);
-
 }
 
 { /** Loopback test */