[lxc-devel] [PATCH] Fix strlen on non-null terminated buffer strlen() becomes strnlen()
Serge Hallyn
serge.hallyn at ubuntu.com
Mon Sep 7 19:50:10 UTC 2015
Quoting Christian Brauner (christianvanbrauner at gmail.com):
> Sorry, forget it, that doesn't make sense...
>
> On Mon, Sep 07, 2015 at 08:38:51PM +0200, Christian Brauner wrote:
> > Signed-off-by: Christian Brauner <christianvanbrauner at gmail.com>
> > ---
> > src/lxc/lxccontainer.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c
> > index 932d658..ae9f895 100644
> > --- a/src/lxc/lxccontainer.c
> > +++ b/src/lxc/lxccontainer.c
> > @@ -2074,7 +2074,7 @@ static bool mod_rdep(struct lxc_container *c0, struct lxc_container *c, bool inc
> > * a multiple of a pagesize. Hence, we'll use memmem(). */
> > if ((del = memmem(buf, fbuf.st_size, newpath, len))) {
> > /* remove container entry */
> > - memmove(del, del + len, strlen(del) - len + 1);
> > + memmove(del, del + len, strnlen(del, fbuf.st_size) - len + 1);
strnlen can still go off the end here. I think you want something like:
if (del != buf + fbuf.st_size - len) {
size_t difflen = fbuf.st_size - (del-buf);
memmove(del, del + len, strnlen(del, difflen) - len);
del[len] = '\0';
}
> >
> > munmap(buf, fbuf.st_size);
> >
> > --
> > 2.5.1
> >
More information about the lxc-devel
mailing list