On 2012-10-09 22:15:44 +0200, Janne Grunau wrote:
> Fixes CID700635, CID700636 and CID732274.
> ---
> libavfilter/graphparser.c | 24 +++++++++++++++---------
> 1 file changed, 15 insertions(+), 9 deletions(-)
>
> diff --git a/libavfilter/graphparser.c b/libavfilter/graphparser.c
> index 3921189..04339c8 100644
> --- a/libavfilter/graphparser.c
> +++ b/libavfilter/graphparser.c
> @@ -238,10 +238,11 @@ static int link_filter_inouts(AVFilterContext *filt_ctx,
> return AVERROR(ENOMEM);
>
> if (p->filter_ctx) {
> - if ((ret = link_filter(p->filter_ctx, p->pad_idx, filt_ctx, pad,
> log_ctx)) < 0)
> - return ret;
> + ret = link_filter(p->filter_ctx, p->pad_idx, filt_ctx, pad,
> log_ctx);
> av_free(p->name);
> av_free(p);
> + if (ret < 0)
> + return ret;
> } else {
> p->filter_ctx = filt_ctx;
> p->pad_idx = pad;
> @@ -289,8 +290,10 @@ static int parse_inputs(const char **buf, AVFilterInOut
> **curr_inputs,
> av_free(name);
> } else {
> /* Not in the list, so add it as an input */
> - if (!(match = av_mallocz(sizeof(AVFilterInOut))))
> + if (!(match = av_mallocz(sizeof(AVFilterInOut)))) {
> + av_free(name);
> return AVERROR(ENOMEM);
> + }
> match->name = name;
> match->pad_idx = pad;
> }
> @@ -318,24 +321,27 @@ static int parse_outputs(const char **buf,
> AVFilterInOut **curr_inputs,
> AVFilterInOut *match;
>
> AVFilterInOut *input = *curr_inputs;
> +
> + if (!name)
> + return AVERROR(EINVAL);
> +
> if (!input) {
> av_log(log_ctx, AV_LOG_ERROR,
> - "No output pad can be associated to link label '%s'.\n",
> - name);
> + "No output pad can be associated to link label '%s'.\n",
> name);
> + av_free(name);
> return AVERROR(EINVAL);
> }
> *curr_inputs = (*curr_inputs)->next;
>
> - if (!name)
> - return AVERROR(EINVAL);
> -
> /* First check if the label is not in the open_inputs list */
> match = extract_inout(name, open_inputs);
>
> if (match) {
> if ((ret = link_filter(input->filter_ctx, input->pad_idx,
> - match->filter_ctx, match->pad_idx,
> log_ctx)) < 0)
> + match->filter_ctx, match->pad_idx,
> log_ctx)) < 0) {
> + av_free(name);
> return ret;
> + }
> av_free(match->name);
> av_free(name);
> av_free(match);
ping
Janne
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel