From 3345d16aed07b55c1c2c12b0d203f6abe7fe5c99 Mon Sep 17 00:00:00 2001 From: Philippe Normand Date: Wed, 27 Jul 2022 09:39:52 +0100 Subject: [PATCH] audio-format: Add macro checking for validity of GstAudioFormatInfo `gst_audio_format_info_fill_silence()` not properly checking the validity of its input may lead it into an infinite loop. Part-of: --- .../gst-plugins-base/gst-libs/gst/audio/audio-format.c | 2 +- .../gst-plugins-base/gst-libs/gst/audio/audio-format.h | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/subprojects/gst-plugins-base/gst-libs/gst/audio/audio-format.c b/subprojects/gst-plugins-base/gst-libs/gst/audio/audio-format.c index 17320d2..b1b8d60 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/audio/audio-format.c +++ b/subprojects/gst-plugins-base/gst-libs/gst/audio/audio-format.c @@ -486,7 +486,7 @@ gst_audio_format_info_fill_silence (const GstAudioFormatInfo * info, { guint8 *dptr = dest; - g_return_if_fail (info != NULL); + g_return_if_fail (GST_AUDIO_FORMAT_INFO_IS_VALID_RAW (info)); g_return_if_fail (dest != NULL); if (info->flags & GST_AUDIO_FORMAT_FLAG_FLOAT || diff --git a/subprojects/gst-plugins-base/gst-libs/gst/audio/audio-format.h b/subprojects/gst-plugins-base/gst-libs/gst/audio/audio-format.h index 15e970f..c7aeef8 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/audio/audio-format.h +++ b/subprojects/gst-plugins-base/gst-libs/gst/audio/audio-format.h @@ -256,6 +256,18 @@ struct _GstAudioFormatInfo { GST_AUDIO_API GType gst_audio_format_info_get_type (void); +/** + * GST_AUDIO_FORMAT_INFO_IS_VALID_RAW: + * + * Tests that the given #GstAudioFormatInfo represents a valid un-encoded + * format. + * + * Since: 1.22 + */ +#define GST_AUDIO_FORMAT_INFO_IS_VALID_RAW(info) \ + (info != NULL && (info)->format > GST_AUDIO_FORMAT_ENCODED && \ + (info)->width > 0 && (info)->depth > 0) + #define GST_AUDIO_FORMAT_INFO_FORMAT(info) ((info)->format) #define GST_AUDIO_FORMAT_INFO_NAME(info) ((info)->name) #define GST_AUDIO_FORMAT_INFO_FLAGS(info) ((info)->flags) -- 2.7.4