diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2016-09-14 11:20:48 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2016-09-14 11:20:48 +0200 |
commit | 8443af343ec7dc026e27ab9cbf5d2ec47bd6fc4d (patch) | |
tree | 3737fd178129e0e4d6cfca95636b66834b227f74 /ext/libav/gstavcodecmap.c | |
parent | 77f4d2f06bddf74ade93c2705493793b2bb5c0d6 (diff) | |
download | gst-libav-8443af343ec7dc026e27ab9cbf5d2ec47bd6fc4d.tar.gz |
av: Cast AVContext::bit_rate to a guint before passing to varargs functions
We expect it to be a int or uint, however it changed the type to a
int64_t in later versions of ffmpeg. As such it would be passed as a 64
bit value to varargs functions, while the consumer of the arguments
assumes only 32 bits. This causes crashes.
https://bugzilla.gnome.org/show_bug.cgi?id=771092
Diffstat (limited to 'ext/libav/gstavcodecmap.c')
-rw-r--r-- | ext/libav/gstavcodecmap.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/ext/libav/gstavcodecmap.c b/ext/libav/gstavcodecmap.c index a507c5a..2274989 100644 --- a/ext/libav/gstavcodecmap.c +++ b/ext/libav/gstavcodecmap.c @@ -1146,8 +1146,8 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id, caps = gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-wma", "wmaversion", G_TYPE_INT, version, "block_align", G_TYPE_INT, - context->block_align, "bitrate", G_TYPE_INT, context->bit_rate, - NULL); + context->block_align, "bitrate", G_TYPE_INT, + (guint) context->bit_rate, NULL); } else { caps = gst_ff_aud_caps_new (context, NULL, codec_id, encode, "audio/x-wma", @@ -1824,7 +1824,7 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id, if (context) gst_caps_set_simple (caps, "block_align", G_TYPE_INT, context->block_align, - "bitrate", G_TYPE_INT, context->bit_rate, NULL); + "bitrate", G_TYPE_INT, (guint) context->bit_rate, NULL); break; case AV_CODEC_ID_ADPCM_G726: @@ -1836,7 +1836,7 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id, if (context) gst_caps_set_simple (caps, "block_align", G_TYPE_INT, context->block_align, - "bitrate", G_TYPE_INT, context->bit_rate, NULL); + "bitrate", G_TYPE_INT, (guint) context->bit_rate, NULL); if (!encode) { gst_caps_append (caps, gst_caps_new_simple ("audio/x-adpcm", @@ -1970,7 +1970,7 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id, if (context) gst_caps_set_simple (caps, "block_align", G_TYPE_INT, context->block_align, - "bitrate", G_TYPE_INT, context->bit_rate, NULL); + "bitrate", G_TYPE_INT, (guint) context->bit_rate, NULL); } break; @@ -2012,7 +2012,7 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id, if (context) { gst_caps_set_simple (caps, "leaf_size", G_TYPE_INT, context->block_align, - "bitrate", G_TYPE_INT, context->bit_rate, NULL); + "bitrate", G_TYPE_INT, (guint) context->bit_rate, NULL); } } break; @@ -2044,7 +2044,7 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id, if (context) { gst_caps_set_simple (caps, "leaf_size", G_TYPE_INT, context->block_align, - "bitrate", G_TYPE_INT, context->bit_rate, NULL); + "bitrate", G_TYPE_INT, (guint) context->bit_rate, NULL); } } break; @@ -2082,7 +2082,7 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id, if (context) gst_caps_set_simple (caps, "block_align", G_TYPE_INT, context->block_align, - "bitrate", G_TYPE_INT, context->bit_rate, NULL); + "bitrate", G_TYPE_INT, (guint) context->bit_rate, NULL); } break; @@ -2166,7 +2166,7 @@ gst_ffmpeg_codecid_to_caps (enum AVCodecID codec_id, if (context) gst_caps_set_simple (caps, "block_align", G_TYPE_INT, context->block_align, - "bitrate", G_TYPE_INT, context->bit_rate, NULL); + "bitrate", G_TYPE_INT, (guint) context->bit_rate, NULL); g_free (mime); break; default: |