diff mbox series

[FFmpeg-devel,v1] avformat/imfdec: check if Asset/Id exists before trying to read it

Message ID 20220826032153.29482-1-pal@sandflow.com
State Accepted
Commit 6e91d405be3c8a1ded025498085e0e606e337030
Headers show
Series [FFmpeg-devel,v1] avformat/imfdec: check if Asset/Id exists before trying to read it | expand

Commit Message

Pierre-Anthony Lemieux Aug. 26, 2022, 3:21 a.m. UTC
From: Pierre-Anthony Lemieux <pal@palemieux.com>

Fixes Coverity issue #1512406

---
 libavformat/imfdec.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Pierre-Anthony Lemieux Sept. 5, 2022, 8:10 p.m. UTC | #1
Ping.

This fixes Coverity issue #1512406.

On Thu, Aug 25, 2022 at 8:22 PM <pal@sandflow.com> wrote:
>
> From: Pierre-Anthony Lemieux <pal@palemieux.com>
>
> Fixes Coverity issue #1512406
>
> ---
>  libavformat/imfdec.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/libavformat/imfdec.c b/libavformat/imfdec.c
> index 5bbe7a53f8..fde91a6419 100644
> --- a/libavformat/imfdec.c
> +++ b/libavformat/imfdec.c
> @@ -233,7 +233,12 @@ static int parse_imf_asset_map_from_xml_dom(AVFormatContext *s,
>
>          asset = &(asset_map->assets[asset_map->asset_count]);
>
> -        if (ff_imf_xml_read_uuid(ff_imf_xml_get_child_element_by_name(asset_element, "Id"), asset->uuid)) {
> +        if (!(node = ff_imf_xml_get_child_element_by_name(asset_element, "Id"))) {
> +            av_log(s, AV_LOG_ERROR, "Unable to parse asset map XML - missing Id node\n");
> +            return AVERROR_INVALIDDATA;
> +        }
> +
> +        if (ff_imf_xml_read_uuid(node, asset->uuid)) {
>              av_log(s, AV_LOG_ERROR, "Could not parse UUID from asset in asset map.\n");
>              return AVERROR_INVALIDDATA;
>          }
> --
> 2.25.1
>
diff mbox series

Patch

diff --git a/libavformat/imfdec.c b/libavformat/imfdec.c
index 5bbe7a53f8..fde91a6419 100644
--- a/libavformat/imfdec.c
+++ b/libavformat/imfdec.c
@@ -233,7 +233,12 @@  static int parse_imf_asset_map_from_xml_dom(AVFormatContext *s,
 
         asset = &(asset_map->assets[asset_map->asset_count]);
 
-        if (ff_imf_xml_read_uuid(ff_imf_xml_get_child_element_by_name(asset_element, "Id"), asset->uuid)) {
+        if (!(node = ff_imf_xml_get_child_element_by_name(asset_element, "Id"))) {
+            av_log(s, AV_LOG_ERROR, "Unable to parse asset map XML - missing Id node\n");
+            return AVERROR_INVALIDDATA;
+        }
+
+        if (ff_imf_xml_read_uuid(node, asset->uuid)) {
             av_log(s, AV_LOG_ERROR, "Could not parse UUID from asset in asset map.\n");
             return AVERROR_INVALIDDATA;
         }