bytestream2_get_bytes_left returns an unsigned int; as a result,
it returns big positive numbers if an overread already happened,
making it unsuitable for scenarios where one wants to allow this
(because the buffer is actually padded so that no segfaults can
happen). So add a function returning ptrdiff_t for this purpose;
given that it is intended to be used with the unsafe functions,
it has an "u" suffix, although it is not unsafe by itself.

Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@gmail.com>
---
 libavcodec/bytestream.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/libavcodec/bytestream.h b/libavcodec/bytestream.h
index 7be7fc22fc..18774524cf 100644
--- a/libavcodec/bytestream.h
+++ b/libavcodec/bytestream.h
@@ -156,6 +156,11 @@ static av_always_inline unsigned int 
bytestream2_get_bytes_left(GetByteContext *
     return g->buffer_end - g->buffer;
 }
 
+static av_always_inline ptrdiff_t bytestream2_get_bytes_leftu(GetByteContext 
*g)
+{
+    return g->buffer_end - g->buffer;
+}
+
 static av_always_inline unsigned int 
bytestream2_get_bytes_left_p(PutByteContext *p)
 {
     return p->buffer_end - p->buffer;
-- 
2.20.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to