summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiago Santos <thiago.sousa.santos@collabora.co.uk>2009-12-02 11:21:22 -0300
committerThiago Santos <thiago.sousa.santos@collabora.co.uk>2009-12-02 11:34:34 -0300
commit82ab87032d46ca92eb4262e2340dffb0d7fad15e (patch)
tree7acfcfc492ba0fabd2581f9bdaae0bb1ec64bcdb
parent21177487d9bce29577ae24beffaa0c26f26a6197 (diff)
lame: Avoid crash when seeking before negotiating
lame's 'lgv' variable is only initialized when the caps is negotiated, whenever a seek happens before that, it would attempt to call a function on an empty pointer, causing the crash. Fixes #603515
-rw-r--r--ext/lame/gstlame.c12
-rw-r--r--ext/lame/gstlamemp3enc.c12
2 files changed, 14 insertions, 10 deletions
diff --git a/ext/lame/gstlame.c b/ext/lame/gstlame.c
index 1849fd2f..93448396 100644
--- a/ext/lame/gstlame.c
+++ b/ext/lame/gstlame.c
@@ -1024,11 +1024,13 @@ gst_lame_sink_event (GstPad * pad, GstEvent * event)
GST_DEBUG_OBJECT (lame, "handling FLUSH stop event");
- /* clear buffers */
- mp3_buffer_size = 7200;
- mp3_data = g_malloc (mp3_buffer_size);
- lame_encode_flush (lame->lgf, mp3_data, mp3_buffer_size);
- g_free (mp3_data);
+ if (lame->lgf) {
+ /* clear buffers if we already have lame set up */
+ mp3_buffer_size = 7200;
+ mp3_data = g_malloc (mp3_buffer_size);
+ lame_encode_flush (lame->lgf, mp3_data, mp3_buffer_size);
+ g_free (mp3_data);
+ }
ret = gst_pad_push_event (lame->srcpad, event);
break;
diff --git a/ext/lame/gstlamemp3enc.c b/ext/lame/gstlamemp3enc.c
index 38b3b635..876ad0a4 100644
--- a/ext/lame/gstlamemp3enc.c
+++ b/ext/lame/gstlamemp3enc.c
@@ -586,11 +586,13 @@ gst_lamemp3enc_sink_event (GstPad * pad, GstEvent * event)
GST_DEBUG_OBJECT (lame, "handling FLUSH stop event");
- /* clear buffers */
- mp3_buffer_size = 7200;
- mp3_data = g_malloc (mp3_buffer_size);
- lame_encode_flush (lame->lgf, mp3_data, mp3_buffer_size);
- g_free (mp3_data);
+ if (lame->lgf) {
+ /* clear buffers if we already have lame set up */
+ mp3_buffer_size = 7200;
+ mp3_data = g_malloc (mp3_buffer_size);
+ lame_encode_flush (lame->lgf, mp3_data, mp3_buffer_size);
+ g_free (mp3_data);
+ }
ret = gst_pad_push_event (lame->srcpad, event);
break;