| 123456789101112131415161718192021222324252627282930313233 | #include "flakystream.h"#include <string.h>bool flakystream_callback(pb_istream_t *stream, pb_byte_t *buf, size_t count){    flakystream_t *state = stream->state;    if (state->position + count > state->msglen)    {        stream->bytes_left = 0;        return false;    }    else if (state->position + count > state->fail_after)    {        PB_RETURN_ERROR(stream, "flaky error");    }    memcpy(buf, state->buffer + state->position, count);    state->position += count;    return true;}void flakystream_init(flakystream_t *stream, const uint8_t *buffer, size_t msglen, size_t fail_after){    memset(stream, 0, sizeof(*stream));    stream->stream.callback = flakystream_callback;    stream->stream.bytes_left = SIZE_MAX;    stream->stream.state = stream;    stream->buffer = buffer;    stream->position = 0;    stream->msglen = msglen;    stream->fail_after = fail_after;}
 |