[lxc-devel] [PATCH] Fix strlen on non-null terminated buffer strlen() becomes strnlen()
Christian Brauner
christianvanbrauner at gmail.com
Mon Sep 7 20:18:27 UTC 2015
On Mon, Sep 07, 2015 at 07:50:10PM +0000, Serge Hallyn wrote:
> 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';
> }
Thanks, what about:
if ((del = memmem(buf, fbuf.st_size, newpath, len))) {
size_t dellen = fbuf.st_size - len;
memmove(del, del + len, dellen - len);
}
What would you prefer?
I don't know if we want to append '\0' or leave that to the caller?
>
>
> > >
> > > munmap(buf, fbuf.st_size);
> > >
> > > --
> > > 2.5.1
> > >
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20150907/4944b786/attachment.sig>
More information about the lxc-devel
mailing list