On Thu, Mar 26, 2015 at 01:25:19AM +0100, Mariusz Szczepańczyk wrote:
> From: Lukasz Marek <lukasz.m.lu...@gmail.com>
> 
> Convinient function to build paths.
> ---
>  libavutil/avstring.c    | 43 +++++++++++++++++++++++++++++++++++++++++++
>  libavutil/avstring.h    | 10 ++++++++++
>  tests/ref/fate/avstring |  9 +++++++++
>  3 files changed, 62 insertions(+)
> 
> diff --git a/libavutil/avstring.c b/libavutil/avstring.c
> index 25c65b4..f105aa7 100644
> --- a/libavutil/avstring.c
> +++ b/libavutil/avstring.c
> @@ -269,6 +269,35 @@ const char *av_dirname(char *path)
>      return path;
>  }
>  
> +char *av_append_path_component(const char *path, const char *component)
> +{
> +    size_t p_len, c_len;
> +    char *fullpath;
> +
> +    if (!path)
> +        return component ? av_strdup(component) : NULL;
> +    if (!component)
> +        return av_strdup(path);
> +
> +    p_len = strlen(path);
> +    c_len = strlen(component);

> +    fullpath = malloc(p_len + c_len + 2);

av_malloc()


> +    if (fullpath) {
> +        if (p_len) {

> +            strcpy(fullpath, path);

av_strlcpy() is more robust/secure


> +            if (c_len) {
> +                if (fullpath[p_len - 1] != '/' && component[0] != '/')
> +                    fullpath[p_len++] = '/';
> +                else if (fullpath[p_len - 1] == '/' && component[0] == '/')
> +                    p_len--;
> +            }
> +        }
> +        strcpy(&fullpath[p_len], component);

av_strlcpy()

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Old school: Use the lowest level language in which you can solve the problem
            conveniently.
New school: Use the highest level language in which the latest supercomputer
            can solve the problem without the user falling asleep waiting.

Attachment: signature.asc
Description: Digital signature

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to