diff options
author | Thiago Santos <thiago.sousa.santos@collabora.co.uk> | 2009-12-02 11:21:22 -0300 |
---|---|---|
committer | Thiago Santos <thiago.sousa.santos@collabora.co.uk> | 2009-12-02 11:34:34 -0300 |
commit | 82ab87032d46ca92eb4262e2340dffb0d7fad15e (patch) | |
tree | 7acfcfc492ba0fabd2581f9bdaae0bb1ec64bcdb | |
parent | 21177487d9bce29577ae24beffaa0c26f26a6197 (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.c | 12 | ||||
-rw-r--r-- | ext/lame/gstlamemp3enc.c | 12 |
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; |