[FFmpeg-devel] [PATCH v2 2/2] lavf/url: rewrite ff_make_absolute_url() using ff_url_decompose().
Marton Balint
cus at passwd.hu
Mon Aug 10 22:38:37 EEST 2020
On Wed, 5 Aug 2020, Nicolas George wrote:
> Also add and update some tests.
>
> Change the semantic a little, because for filesytem paths
> symlinks complicate things.
> See the comments in the code for detail.
Add to commit message that this fixes tickets 8813, 8814.
>
> Signed-off-by: Nicolas George <george at nsup.org>
> ---
> libavformat/tests/url.c | 60 ++++++++-
> libavformat/url.c | 261 ++++++++++++++++++++--------------------
> libavformat/url.h | 4 +-
> tests/ref/fate/url | 54 ++++++++-
> 4 files changed, 245 insertions(+), 134 deletions(-)
>
[...]
> + if (keep > ub.path)
> + simplify_path = 0;
> + if (URL_COMPONENT_HAVE(uc, scheme))
> + simplify_path = 0;
> + if (URL_COMPONENT_HAVE(uc, authority))
> + simplify_path = 1;
You can move these after the use_base_path section but before the empty
path check which also sets simplify_path.
> +
> + use_base_path = URL_COMPONENT_HAVE(ub, path) && keep <= ub.path;
> + if (uc.path > uc.url)
> + use_base_path = 0;
> + if (URL_COMPONENT_HAVE(uc, path) && uc.path[0] == '/')
> + use_base_path = 0;
> + if (use_base_path) {
> + base_path_end = ub.url_component_end_path;
> + if (URL_COMPONENT_HAVE(uc, path))
> + while (base_path_end > ub.path && base_path_end[-1] != '/')
> + base_path_end--;
> }
> + if (!use_base_path && !URL_COMPONENT_HAVE(uc, path))
> + simplify_path = 0;
[...]
> +error:
Add TODO that this can be removed after all callers check return value
> + snprintf(buf, size, "invalid:%s",
> + ret == AVERROR(ENOMEM) ? "truncated" :
> + ret == AVERROR(EINVAL) ? "syntax_error" : "");
> + return ret;
> }
With the comments above, LGTM, thanks.
Regards,
Marton
More information about the ffmpeg-devel
mailing list