[FFmpeg-cvslog] lavc: introduce the convenience function init_get_bits8

Luca Barbato git at videolan.org
Thu Jan 17 04:44:34 CET 2013


ffmpeg | branch: release/1.1 | Luca Barbato <lu_zero at gentoo.org> | Sun Jan 13 23:37:11 2013 +0100| [71e00caeab89d9beeef9c947673f72e992bd109c] | committer: Luca Barbato

lavc: introduce the convenience function init_get_bits8

Accept the buffer size in bytes and check for overflow before passing
the value in bits to init_get_bits.
(cherry picked from commit e28ac6e5e27e64a206e399e958481c1e6f992189)

Signed-off-by: Luca Barbato <lu_zero at gentoo.org>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=71e00caeab89d9beeef9c947673f72e992bd109c
---

 libavcodec/get_bits.h |   16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/libavcodec/get_bits.h b/libavcodec/get_bits.h
index 16cfd5e..12770a2 100644
--- a/libavcodec/get_bits.h
+++ b/libavcodec/get_bits.h
@@ -393,6 +393,22 @@ static inline int init_get_bits(GetBitContext *s, const uint8_t *buffer,
     return ret;
 }
 
+/**
+ * Initialize GetBitContext.
+ * @param buffer bitstream buffer, must be FF_INPUT_BUFFER_PADDING_SIZE bytes
+ *        larger than the actual read bits because some optimized bitstream
+ *        readers read 32 or 64 bit at once and could read over the end
+ * @param byte_size the size of the buffer in bytes
+ * @return 0 on success, AVERROR_INVALIDDATA if the buffer_size would overflow.
+ */
+static inline int init_get_bits8(GetBitContext *s, const uint8_t *buffer,
+                                 int byte_size)
+{
+    if (byte_size > INT_MAX / 8)
+        return AVERROR_INVALIDDATA;
+    return init_get_bits(s, buffer, byte_size * 8);
+}
+
 static inline void align_get_bits(GetBitContext *s)
 {
     int n = -get_bits_count(s) & 7;



More information about the ffmpeg-cvslog mailing list