[FFmpeg-cvslog] lavc/options: don't copy priv context when it is not AVOption object

Lukasz Marek git at videolan.org
Sat Dec 6 00:06:42 CET 2014


ffmpeg | branch: master | Lukasz Marek <lukasz.m.luki2 at gmail.com> | Tue Dec  2 23:24:15 2014 +0100| [53b2809f2c1b942adf4d876ac446ef97f812ac0c] | committer: Lukasz Marek

lavc/options: don't copy priv context when it is not AVOption object

This prevents potential crash when opt API is used without a class.

Signed-off-by: Lukasz Marek <lukasz.m.luki2 at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=53b2809f2c1b942adf4d876ac446ef97f812ac0c
---

 libavcodec/options.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libavcodec/options.c b/libavcodec/options.c
index 7f9fb07..49c8b40 100644
--- a/libavcodec/options.c
+++ b/libavcodec/options.c
@@ -195,11 +195,12 @@ int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src)
     av_opt_copy(dest, src);
 
     dest->priv_data       = orig_priv_data;
+    dest->codec           = orig_codec;
 
-    if (orig_priv_data)
+    if (orig_priv_data && src->codec && src->codec->priv_class &&
+        dest->codec && dest->codec->priv_class)
         av_opt_copy(orig_priv_data, src->priv_data);
 
-    dest->codec           = orig_codec;
 
     /* set values specific to opened codecs back to their default state */
     dest->slice_offset    = NULL;



More information about the ffmpeg-cvslog mailing list