t9pfuse: better handling of SETXATTR (sqweek) - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 869875b48b4455937fdddb7c98fbff7699c1effb
 (DIR) parent 4712e22300315fcad068cc611de6866bb1e2a502
 (HTM) Author: Russ Cox <rsc@swtch.com>
       Date:   Fri,  4 Jul 2008 03:41:19 -0400
       
       9pfuse: better handling of SETXATTR (sqweek)
       
       Diffstat:
         M src/cmd/9pfuse/fuse.c               |      13 ++++++++-----
       
       1 file changed, 8 insertions(+), 5 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/9pfuse/fuse.c b/src/cmd/9pfuse/fuse.c
       t@@ -45,7 +45,7 @@ FuseMsg*
        readfusemsg(void)
        {
                FuseMsg *m;
       -        int n;
       +        int n, nn;
                
                m = allocfusemsg();
                errno = 0;
       t@@ -173,10 +173,13 @@ readfusemsg(void)
                                goto bad;
                        break;
                case FUSE_SETXATTR:
       -                /* struct and two strings */
       -                if(m->hdr->len <= sizeof(struct fuse_setxattr_in)
       -                || ((char*)m->tx)[m->hdr->len-1] != 0
       -                || memchr((uchar*)m->tx+sizeof(struct fuse_setxattr_in), 0, m->hdr->len-sizeof(struct fuse_setxattr_in)-1) == 0)
       +                /* struct, one string, and one binary blob */
       +                if(m->hdr->len <= sizeof(struct fuse_setxattr_in))
       +                        goto bad;
       +                nn = ((struct fuse_setxattr_in*)m->tx)->size;
       +                if(m->hdr->len < sizeof(struct fuse_setxattr_in)+nn+1)
       +                        goto bad;
       +                if(((char*)m->tx)[m->hdr->len-nn-1] != 0)
                                goto bad;
                        break;
                case FUSE_GETXATTR: