Make v4l2_read_header() don't free a stream in case of failure when
authorStefano Sabatini <stefano.sabatini-lala@poste.it>
Tue, 15 Jul 2008 20:45:42 +0000 (20:45 +0000)
committerStefano Sabatini <stefano.sabatini-lala@poste.it>
Tue, 15 Jul 2008 20:45:42 +0000 (20:45 +0000)
reading its header. The stream will be freed later in
av_open_input_stream(). Fix a segmentation fault due to a double free
on the same pointer.

Originally committed as revision 14247 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavdevice/v4l2.c

index de5bf78ca58ae2a5e833b8f8fb348dc5bb3f4d1d..460fdb037e6431b629f9e4a30215c51f6fba29b8 100644 (file)
@@ -526,8 +526,6 @@ static int v4l2_read_header(AVFormatContext *s1, AVFormatParameters *ap)
     capabilities = 0;
     s->fd = device_open(s1, &capabilities);
     if (s->fd < 0) {
-        av_free(st);
-
         return AVERROR(EIO);
     }
     av_log(s1, AV_LOG_INFO, "[%d]Capabilities: %x\n", s->fd, capabilities);
@@ -553,7 +551,6 @@ static int v4l2_read_header(AVFormatContext *s1, AVFormatParameters *ap)
     if (desired_format == 0) {
         av_log(s1, AV_LOG_ERROR, "Cannot find a proper format.\n");
         close(s->fd);
-        av_free(st);
 
         return AVERROR(EIO);
     }
@@ -576,7 +573,6 @@ static int v4l2_read_header(AVFormatContext *s1, AVFormatParameters *ap)
     }
     if (res < 0) {
         close(s->fd);
-        av_free(st);
 
         return AVERROR(EIO);
     }