/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 | 79.3M | { |
6 | 79.3M | flakystream_t *state = stream->state; |
7 | | |
8 | 79.3M | if (state->position + count > state->msglen) |
9 | 11.1k | { |
10 | 11.1k | stream->bytes_left = 0; |
11 | 11.1k | return false; |
12 | 11.1k | } |
13 | 79.3M | else if (state->position + count > state->fail_after) |
14 | 4.64k | { |
15 | 4.64k | PB_RETURN_ERROR(stream, "flaky error"); |
16 | 4.64k | } |
17 | | |
18 | 79.3M | memcpy(buf, state->buffer + state->position, count); |
19 | 79.3M | state->position += count; |
20 | 79.3M | return true; |
21 | 79.3M | } |
22 | | |
23 | | void flakystream_init(flakystream_t *stream, const uint8_t *buffer, size_t msglen, size_t fail_after) |
24 | 19.0k | { |
25 | 19.0k | memset(stream, 0, sizeof(*stream)); |
26 | 19.0k | stream->stream.callback = flakystream_callback; |
27 | 19.0k | stream->stream.bytes_left = SIZE_MAX; |
28 | 19.0k | stream->stream.state = stream; |
29 | 19.0k | stream->buffer = buffer; |
30 | 19.0k | stream->position = 0; |
31 | 19.0k | stream->msglen = msglen; |
32 | 19.0k | stream->fail_after = fail_after; |
33 | 19.0k | } |