From: Steven Liu <lingjiujianke@gmail.com>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Subject: Re: [FFmpeg-devel] [PATCH 1/2] avformat/dashdec: Fix crash on invalid input/ENOMEM, fix leak
Date: Wed, 21 Sep 2022 14:03:34 +0800
Message-ID: <CADxeRw=ZQF=zwrRGT4ndsPr+34-CkE7cMCtR5=BBCDQUY1sd3Q@mail.gmail.com> (raw)
In-Reply-To: <GV1P250MB0737911CD13E56A939FA82E68F4C9@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM>
Andreas Rheinhardt <andreas.rheinhardt@outlook.com> 于2022年9月21日周三 04:25写道:
>
> In case a SupplementalProperty node exists in an adaptationset,
> it is searched for a "schemeIdUri" property via xmlGetProp().
> Whatever xmlGetProp() returns is then compared via av_strcasecmp()
> to a string literal. xmlGetProp() can return NULL, namely in case
> no "schemeIdUri" exists and (given that this string is allocated)
> presumably also on allocation failure. No check for NULL is done,
> so this may crash.
>
> Furthermore, the string returned by xmlGetProp() needs to be freed
> with xmlFree(), but this is not done either.
>
> This commit fixes both of these issues; they existed since this code
> has been added in 10d008f0fd9e713e290f626300d66382ad786c49.
>
> This has been found while investigating ticket #9697. The continuous
> leaks might very well be the reason behind the observed slowdown.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> ---
> libavformat/dashdec.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/libavformat/dashdec.c b/libavformat/dashdec.c
> index 63bf7e96a5..2ca91bea8b 100644
> --- a/libavformat/dashdec.c
> +++ b/libavformat/dashdec.c
> @@ -956,7 +956,11 @@ static int parse_manifest_representation(AVFormatContext *s, const char *url,
> xmlFree(val);
> }
> if (adaptionset_supplementalproperty_node) {
> - if (!av_strcasecmp(xmlGetProp(adaptionset_supplementalproperty_node,"schemeIdUri"), "http://dashif.org/guidelines/last-segment-number")) {
> + char *scheme_id_uri = xmlGetProp(adaptionset_supplementalproperty_node, "schemeIdUri");
> + if (scheme_id_uri) {
> + int is_last_segment_number = !av_strcasecmp(scheme_id_uri, "http://dashif.org/guidelines/last-segment-number");
> + xmlFree(scheme_id_uri);
> + if (is_last_segment_number) {
> val = xmlGetProp(adaptionset_supplementalproperty_node,"value");
> if (!val) {
> av_log(s, AV_LOG_ERROR, "Missing value attribute in adaptionset_supplementalproperty_node\n");
> @@ -965,6 +969,7 @@ static int parse_manifest_representation(AVFormatContext *s, const char *url,
> xmlFree(val);
> }
> }
> + }
> }
>
> fragment_timeline_node = find_child_node_by_name(representation_segmenttemplate_node, "SegmentTimeline");
> --
> 2.34.1
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
patchset lgtm
Thanks
Steven
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
prev parent reply other threads:[~2022-09-21 6:03 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-20 20:25 Andreas Rheinhardt
2022-09-20 20:25 ` [FFmpeg-devel] [PATCH 2/2] avformat/dashdec: Reindent after the previous commit Andreas Rheinhardt
2022-09-21 6:03 ` Steven Liu [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CADxeRw=ZQF=zwrRGT4ndsPr+34-CkE7cMCtR5=BBCDQUY1sd3Q@mail.gmail.com' \
--to=lingjiujianke@gmail.com \
--cc=andreas.rheinhardt@outlook.com \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git