]> git.sesse.net Git - vlc/commitdiff
avcodec: use av_get_pix_fmt_name(), fix potential out-of-band read
authorRémi Denis-Courmont <remi@remlab.net>
Wed, 10 Oct 2012 15:17:03 +0000 (18:17 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Fri, 12 Oct 2012 08:28:30 +0000 (11:28 +0300)
Our custom codec names table lacked boundary checks and was incomplete.

modules/codec/avcodec/video.c

index 0af22bb5932df4da8010a43d80b64e3b8f8d0780..1c1e94373e46d7eaf85e643e62ee1a89b09a2cde 100644 (file)
@@ -59,6 +59,7 @@
 #include "va.h"
 #if defined(HAVE_AVCODEC_VAAPI) || defined(HAVE_AVCODEC_DXVA2) || defined(HAVE_AVCODEC_VDA)
 #   define HAVE_AVCODEC_VA
+#   include <libavutil/pixdesc.h>
 #endif
 
 /*****************************************************************************
@@ -1156,21 +1157,9 @@ static enum PixelFormat ffmpeg_GetFormat( AVCodecContext *p_context,
     /* Try too look for a supported hw acceleration */
     for( int i = 0; pi_fmt[i] != PIX_FMT_NONE; i++ )
     {
-        static const char *ppsz_name[PIX_FMT_NB] = {
-            [PIX_FMT_VDPAU_H264] = "PIX_FMT_VDPAU_H264",
-            [PIX_FMT_VAAPI_IDCT] = "PIX_FMT_VAAPI_IDCT",
-            [PIX_FMT_VAAPI_VLD] = "PIX_FMT_VAAPI_VLD",
-            [PIX_FMT_VAAPI_MOCO] = "PIX_FMT_VAAPI_MOCO",
-#ifdef HAVE_AVCODEC_DXVA2
-            [PIX_FMT_DXVA2_VLD] = "PIX_FMT_DXVA2_VLD",
-#endif
-#ifdef HAVE_AVCODEC_VDA
-            [PIX_FMT_VDA_VLD] = "PIX_FMT_VDA_VLD",
-#endif
-            [PIX_FMT_YUYV422] = "PIX_FMT_YUYV422",
-            [PIX_FMT_YUV420P] = "PIX_FMT_YUV420P",
-        };
-        msg_Dbg( p_dec, "Available decoder output format %d (%s)", pi_fmt[i], ppsz_name[pi_fmt[i]] ?: "Unknown" );
+        const char *name = av_get_pix_fmt_name(pi_fmt[i]);
+        msg_Dbg( p_dec, "Available decoder output format %d (%s)", pi_fmt[i],
+                 name ? name : "unknown" );
 
         /* Only VLD supported */
         if( pi_fmt[i] == PIX_FMT_VAAPI_VLD )