[Ffmpeg-devel] [PATCH] fix segment fault in h264_parse if buf_size is zero

Limin Wang lance.lmwang
Wed Apr 11 08:38:38 CEST 2007


Hi,

> > > > Index: libavcodec/h264.c
> > > > ===================================================================
> > > > --- libavcodec/h264.c	(revision 8688)
> > > > +++ libavcodec/h264.c	(working copy)
> > > > @@ -8059,7 +8059,7 @@
> > > >              return buf_size;
> > > >          }
> > > >  
> > > > -        if(next<0){
> > > > +        if(next<0 && pc->last_index+next > 0){
> > > 
> > > i think the check should rather be next<0 && next != END_NOT_FOUND
> > 
> > It's OK for the file end case, however anybody can make sure in these
> > condition, pc->last_index + next>=0? The logic isn't clear and difficult
> > to maintain.
> 
> if pc->last_index+next < 0 and next != END_NOT_FOUND then theres a bug
> somewhere and that has to be fixed not hidden, feel free to add assert()
> if you like

OK, update patch attached. One question is now the assert will do nothing
for NDEBUG is defined.

Thanks,
Limin
-------------- next part --------------
Index: libavcodec/h264.c
===================================================================
--- libavcodec/h264.c	(revision 8688)
+++ libavcodec/h264.c	(working copy)
@@ -8059,7 +8059,8 @@
             return buf_size;
         }
 
-        if(next<0){
+        if(next<0 && next != END_NOT_FOUND){
+            assert(pc->last_index + next >= 0 );
             find_frame_end(h, &pc->buffer[pc->last_index + next], -next); //update state
         }
     }



More information about the ffmpeg-devel mailing list