diff options
author | Petteri Aimonen <jpa@git.mail.kapsi.fi> | 2016-12-09 18:57:08 +0200 |
---|---|---|
committer | Petteri Aimonen <jpa@git.mail.kapsi.fi> | 2016-12-09 18:57:08 +0200 |
commit | 58af4d1fb733c5348b68dd3980f2a230d95400b4 (patch) | |
tree | 2d70ebb12e34a4e55fbc369344d98c4e7dc4958f /pb_decode.c | |
parent | 66a5f06c985537a7e45969c52260b083ec04e82b (diff) |
Enable clang integer sanitizer and clean up a few warnings.
Changed to use simple indexing instead of while (count--) in buf_read()/buf_write(),
because the count overflowed from 0 to max on the last iteration. While the unsigned
integer overflow is defined and behaviour was correct, making this simple change
allowed enabling the sanitizer which might catch true errors elsewhere in the code.
Diffstat (limited to 'pb_decode.c')
-rw-r--r-- | pb_decode.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/pb_decode.c b/pb_decode.c index 1f6aeae0..b2a3a310 100644 --- a/pb_decode.c +++ b/pb_decode.c @@ -75,13 +75,14 @@ static const pb_decoder_t PB_DECODERS[PB_LTYPES_COUNT] = { static bool checkreturn buf_read(pb_istream_t *stream, pb_byte_t *buf, size_t count) { + size_t i; const pb_byte_t *source = (const pb_byte_t*)stream->state; stream->state = (pb_byte_t*)stream->state + count; if (buf != NULL) { - while (count--) - *buf++ = *source++; + for (i = 0; i < count; i++) + buf[i] = source[i]; } return true; |