/src/nanopb/tests/build/fuzztest/flakystream.c
Line | Count | Source |
1 | | #include "flakystream.h" |
2 | | #include <string.h> |
3 | | |
4 | | bool flakystream_callback(pb_istream_t *stream, pb_byte_t *buf, size_t count) |
5 | 78.0M | { |
6 | 78.0M | flakystream_t *state = stream->state; |
7 | | |
8 | 78.0M | if (state->position + count > state->msglen) |
9 | 11.5k | { |
10 | 11.5k | stream->bytes_left = 0; |
11 | 11.5k | return false; |
12 | 11.5k | } |
13 | 78.0M | else if (state->position + count > state->fail_after) |
14 | 4.62k | { |
15 | 4.62k | PB_RETURN_ERROR(stream, "flaky error"); |
16 | 4.62k | } |
17 | | |
18 | 78.0M | memcpy(buf, state->buffer + state->position, count); |
19 | 78.0M | state->position += count; |
20 | 78.0M | return true; |
21 | 78.0M | } |
22 | | |
23 | | void flakystream_init(flakystream_t *stream, const uint8_t *buffer, size_t msglen, size_t fail_after) |
24 | 19.4k | { |
25 | 19.4k | memset(stream, 0, sizeof(*stream)); |
26 | 19.4k | stream->stream.callback = flakystream_callback; |
27 | | stream->stream.bytes_left = SIZE_MAX; |
28 | 19.4k | stream->stream.state = stream; |
29 | 19.4k | stream->buffer = buffer; |
30 | 19.4k | stream->position = 0; |
31 | 19.4k | stream->msglen = msglen; |
32 | 19.4k | stream->fail_after = fail_after; |
33 | 19.4k | } |