summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>2004-09-13 20:13:32 +0000
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>2004-09-13 20:13:32 +0000
commit84f449bd4b4553798c1210d8f4a9f9e59fb50c2c (patch)
tree358f0738389d5312c61016b0d461902939daa215
parentfe20ee421865cc8a7a98b2eaaa60fa288a0f527c (diff)
downloadgst-plugins-bad-84f449bd4b4553798c1210d8f4a9f9e59fb50c2c.tar.gz
gst-plugins-bad-84f449bd4b4553798c1210d8f4a9f9e59fb50c2c.tar.bz2
gst-plugins-bad-84f449bd4b4553798c1210d8f4a9f9e59fb50c2c.zip
gst/qtdemux/qtdemux.c: Don't crash by dividing by zero (see sample movie in #126922).
Original commit message from CVS: * gst/qtdemux/qtdemux.c: (gst_qtdemux_add_stream), (qtdemux_parse_trak): Don't crash by dividing by zero (see sample movie in #126922).
-rw-r--r--ChangeLog6
-rw-r--r--gst/qtdemux/qtdemux.c12
2 files changed, 14 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index c495c715..1e54c3bd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2004-09-13 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
+ * gst/qtdemux/qtdemux.c: (gst_qtdemux_add_stream),
+ (qtdemux_parse_trak):
+ Don't crash by dividing by zero (see sample movie in #126922).
+
+2004-09-13 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
+
* gst/qtdemux/qtdemux.c: (qtdemux_audio_caps):
Don't touch non-existing data (fixes crash on file in #140147).
diff --git a/gst/qtdemux/qtdemux.c b/gst/qtdemux/qtdemux.c
index e4a54f07..1abaf0f2 100644
--- a/gst/qtdemux/qtdemux.c
+++ b/gst/qtdemux/qtdemux.c
@@ -850,7 +850,8 @@ gst_qtdemux_add_stream (GstQTDemux * qtdemux, QtDemuxStream * stream)
g_print ("setting caps %s\n", gst_caps_to_string (stream->caps));
gst_pad_set_explicit_caps (stream->pad, stream->caps);
- GST_DEBUG ("adding pad %p to qtdemux %p", stream->pad, qtdemux);
+ GST_DEBUG ("adding pad %s %p to qtdemux %p",
+ gst_pad_get_name (stream->pad), stream->pad, qtdemux);
gst_element_add_pad (GST_ELEMENT (qtdemux), stream->pad);
}
@@ -2117,9 +2118,12 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
}
samples[j].chunk = j;
samples[j].offset = chunk_offset;
- samples[j].size =
- samples_per_chunk * stream->bytes_per_frame /
- stream->samples_per_packet / stream->compression;
+ if (stream->samples_per_packet * stream->compression != 0)
+ samples[j].size =
+ samples_per_chunk * stream->bytes_per_frame /
+ stream->samples_per_packet / stream->compression;
+ else
+ samples[j].size = 0;
samples[j].duration =
samples_per_chunk * GST_SECOND / (stream->rate / 2);
samples[j].timestamp = timestamp;