Safeguard substraction in pb_read() (#697) Previously a custom stream callback could modify bytes_left, causing the substraction to wrap.
diff --git a/pb_decode.c b/pb_decode.c index 5405c87..58ee5f7 100644 --- a/pb_decode.c +++ b/pb_decode.c
@@ -111,7 +111,11 @@ return false; #endif - stream->bytes_left -= count; + if (stream->bytes_left < count) + stream->bytes_left = 0; + else + stream->bytes_left -= count; + return true; }