[FFmpeg-devel] [PATCH 3/4] lavu/avstring: add av_append_path_component() funcion
Mariusz Szczepańczyk
mszczepanczyk at gmail.com
Tue Mar 31 22:47:44 CEST 2015
On Mon, Mar 30, 2015 at 12:38 AM, Michael Niedermayer <michaelni at gmx.at>
wrote:
> On Thu, Mar 26, 2015 at 05:39:49PM +0100, Mariusz Szczepańczyk wrote:
> > On Thu, Mar 26, 2015 at 3:40 PM, Michael Niedermayer <michaelni at gmx.at>
> > wrote:
> >
> > > On Thu, Mar 26, 2015 at 01:25:19AM +0100, Mariusz Szczepańczyk wrote:
> > > > From: Lukasz Marek <lukasz.m.luki2 at 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()
> > >
> > >
> > fixed
> >
> >
> > > > + if (fullpath) {
> > > > + if (p_len) {
> > >
> > > > + strcpy(fullpath, path);
> > >
> > > av_strlcpy() is more robust/secure
> > >
> > >
> > fixed
> >
> >
> > >
> > > > + 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()
> > >
> >
> > fixed
> >
> >
> > Mariusz
>
> > libavutil/avstring.c | 43
> +++++++++++++++++++++++++++++++++++++++++++
> > libavutil/avstring.h | 10 ++++++++++
> > tests/ref/fate/avstring | 9 +++++++++
> > 3 files changed, 62 insertions(+)
> > 63e9d3c9f993fff81fbbb734a1e4d2728ebf85eb
> 0003-lavu-avstring-add-av_append_path_component-funcion.patch
> > From a79c0aceef2d3c9f51973958910bed773462fdd8 Mon Sep 17 00:00:00 2001
> > From: Lukasz Marek <lukasz.m.luki2 at gmail.com>
> > Date: Sat, 5 Jul 2014 18:12:02 +0200
> > Subject: [PATCH 3/4] lavu/avstring: add av_append_path_component()
> funcion
> >
> > 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..24bc23a 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;
>
> the NULL check before av_strdup should not be needed
>
>
ok
>
> > + if (!component)
> > + return av_strdup(path);
> > +
> > + p_len = strlen(path);
> > + c_len = strlen(component);
> > + fullpath = av_malloc(p_len + c_len + 2);
>
> this needs a check for potential integer overflow of the additions
>
Added checking.
New patch also updates version.h and APIchanges.
Regards,
Mariusz
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0003-lavu-avstring-add-av_append_path_component-funcion.patch
Type: text/x-patch
Size: 5028 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150331/497e35a9/attachment.bin>
More information about the ffmpeg-devel
mailing list