[x264-devel] Fix bug in --b-adapt 2 with --rc-lookahead >248

Anton Mitrofanov git at videolan.org
Thu May 12 08:38:56 CEST 2011


x264 | branch: master | Anton Mitrofanov <BugMaster at narod.ru> | Sun May  1 17:28:56 2011 +0400| [a1ac97222c36595f04f0aa1928334e0b3a8d0efe] | committer: Jason Garrett-Glaser

Fix bug in --b-adapt 2 with --rc-lookahead >248
Problem caused by buffer overflow in strcpy.

> http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=a1ac97222c36595f04f0aa1928334e0b3a8d0efe
---

 encoder/slicetype.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/encoder/slicetype.c b/encoder/slicetype.c
index 4ecdf31..ca2719e 100644
--- a/encoder/slicetype.c
+++ b/encoder/slicetype.c
@@ -1103,9 +1103,9 @@ static int x264_slicetype_path_cost( x264_t *h, x264_mb_analysis_t *a, x264_fram
 /* Uses strings due to the fact that the speed of the control functions is
    negligible compared to the cost of running slicetype_frame_cost, and because
    it makes debugging easier. */
-static void x264_slicetype_path( x264_t *h, x264_mb_analysis_t *a, x264_frame_t **frames, int length, char (*best_paths)[X264_LOOKAHEAD_MAX] )
+static void x264_slicetype_path( x264_t *h, x264_mb_analysis_t *a, x264_frame_t **frames, int length, char (*best_paths)[X264_LOOKAHEAD_MAX+1] )
 {
-    char paths[2][X264_LOOKAHEAD_MAX];
+    char paths[2][X264_LOOKAHEAD_MAX+1];
     int num_paths = X264_MIN( h->param.i_bframe+1, length );
     int best_cost = COST_MAX;
     int idx = 0;
@@ -1279,7 +1279,7 @@ void x264_slicetype_analyse( x264_t *h, int keyframe )
         {
             if( num_frames > 1 )
             {
-                char best_paths[X264_BFRAME_MAX+1][X264_LOOKAHEAD_MAX] = {"","P"};
+                char best_paths[X264_BFRAME_MAX+1][X264_LOOKAHEAD_MAX+1] = {"","P"};
                 int best_path_index = num_frames % (X264_BFRAME_MAX+1);
 
                 /* Perform the frametype analysis. */



More information about the x264-devel mailing list