struct istream *is = test_istream_create_data(buf->data, buf->used);
struct istream *is_2 = i_stream_create_decrypt(is, test_v2_kp.priv);
- i_stream_unref(&is);
- while(i_stream_read_data(is_2, &ptr, &siz, 0)>0) {
+ size_t offset = 0;
+ while(i_stream_read_data(is_2, &ptr, &siz, 0)>=0) {
+ if (offset == buf->used)
+ test_istream_set_allow_eof(is, TRUE);
+ test_istream_set_size(is, offset);
+
test_assert_idx(pos + siz <= sizeof(payload), pos);
if (pos + siz > sizeof(payload)) break;
test_assert_idx(memcmp(ptr, payload + pos, siz) == 0, pos);
test_assert(is_2->stream_errno == 0);
+ i_stream_unref(&is);
i_stream_unref(&is_2);
buffer_free(&buf);
struct istream *is = test_istream_create_data(buf->data, buf->used);
struct istream *is_2 = i_stream_create_decrypt(is, test_v2_kp.priv);
- i_stream_unref(&is);
- while(i_stream_read_data(is_2, &ptr, &siz, 0)>0) {
+ size_t offset = 0;
+ while(i_stream_read_data(is_2, &ptr, &siz, 0)>=0) {
+ if (offset == buf->used)
+ test_istream_set_allow_eof(is, TRUE);
+ test_istream_set_size(is, offset);
+
test_assert_idx(pos + siz <= sizeof(payload), pos);
if (pos + siz > sizeof(payload)) break;
test_assert_idx(memcmp(ptr, payload + pos, siz) == 0, pos);
test_assert(is_2->stream_errno == 0);
+ i_stream_unref(&is);
i_stream_unref(&is_2);
buffer_free(&buf);
struct istream *is = test_istream_create_data(buf->data, buf->used);
struct istream *is_2 = i_stream_create_decrypt(is, test_v1_kp.priv);
- i_stream_unref(&is);
/* read should not fail */
- while(i_stream_read_data(is_2, &ptr, &siz, 0)>0) {
- test_assert(FALSE); /* should never be reached */
+ size_t offset = 0;
+ ssize_t ret;
+ while ((ret = i_stream_read_data(is_2, &ptr, &siz, 0)) >= 0) {
+ test_assert(ret == 0);
+ if (offset == buf->used)
+ test_istream_set_allow_eof(is, TRUE);
+ test_istream_set_size(is, offset);
};
test_assert(is_2->stream_errno == 0);
if (is_2->stream_errno != 0)
i_debug("error: %s", i_stream_get_error(is_2));
+ i_stream_unref(&is);
i_stream_unref(&is_2);
buffer_free(&buf);
test_end();
struct istream *is = test_istream_create_data(buf->data, buf->used);
struct istream *is_2 = i_stream_create_decrypt(is, test_v1_kp.priv);
- i_stream_unref(&is);
- while(i_stream_read_data(is_2, &ptr, &siz, 0)>0) {
+ size_t offset = 0;
+ while(i_stream_read_data(is_2, &ptr, &siz, 0)>=0) {
+ if (offset == buf->used)
+ test_istream_set_allow_eof(is, TRUE);
+ test_istream_set_size(is, offset);
+
test_assert_idx(pos + siz <= sizeof(payload), pos);
if (pos + siz > sizeof(payload)) break;
test_assert_idx(memcmp(ptr, payload + pos, siz) == 0, pos);
if (is_2->stream_errno != 0)
i_debug("error: %s", i_stream_get_error(is_2));
+ i_stream_unref(&is);
i_stream_unref(&is_2);
buffer_free(&buf);
struct istream *is = test_istream_create_data(buf->data, buf->used);
struct istream *is_2 = i_stream_create_decrypt(is, test_v1_kp.priv);
- i_stream_unref(&is);
- while(i_stream_read_data(is_2, &ptr, &siz, 0)>0) {
+ size_t offset = 0;
+ while(i_stream_read_data(is_2, &ptr, &siz, 0)>=0) {
+ if (offset == buf->used)
+ test_istream_set_allow_eof(is, TRUE);
+ test_istream_set_size(is, offset);
+
test_assert_idx(pos + siz <= sizeof(payload), pos);
if (pos + siz > sizeof(payload)) break;
test_assert_idx(memcmp(ptr, payload + pos, siz) == 0, pos);
if (is_2->stream_errno != 0)
i_debug("error: %s", i_stream_get_error(is_2));
+ i_stream_unref(&is);
i_stream_unref(&is_2);
buffer_free(&buf);
struct istream *is = test_istream_create_data(buf->data, buf->used);
struct istream *is_2 = i_stream_create_decrypt(is, test_v1_kp.priv);
- i_stream_unref(&is);
/* read should not fail */
- while(i_stream_read_data(is_2, &ptr, &siz, 0)>0) {
- test_assert(FALSE); /* should never be reached */
+ size_t offset = 0;
+ ssize_t ret;
+ while ((ret = i_stream_read_data(is_2, &ptr, &siz, 0)) >= 0) {
+ test_assert(ret == 0);
+ if (offset == buf->used)
+ test_istream_set_allow_eof(is, TRUE);
+ test_istream_set_size(is, offset);
};
test_assert(is_2->stream_errno == 0);
if (is_2->stream_errno != 0)
i_debug("error: %s", i_stream_get_error(is_2));
+ i_stream_unref(&is);
i_stream_unref(&is_2);
buffer_free(&buf);
test_end();
memset(data, 0, sizeof(data));
for (size_t s = 0; s <= 400; ++s) {
- struct istream *is = i_stream_create_from_data(data, s);
+ struct istream *is = test_istream_create_data(data, s);
struct istream *ds = i_stream_create_decrypt_callback(is,
no_op_cb, NULL);
- ssize_t siz = i_stream_read(ds);
- test_assert(siz < 0);
+ test_istream_set_allow_eof(is, FALSE);
+ ssize_t siz = 0;
+ for (size_t offset = 0; offset <= s && siz == 0; offset++) {
+ if (offset == s)
+ test_istream_set_allow_eof(is, TRUE);
+ test_istream_set_size(is, offset);
+ siz = i_stream_read(ds);
+ }
+ test_assert_idx(siz < 0, s);
i_stream_unref(&ds);
i_stream_unref(&is);
}