9pfuse: better handling of SETXATTR (sqweek)
This commit is contained in:
parent
4712e22300
commit
869875b48b
1 changed files with 8 additions and 5 deletions
|
|
@ -45,7 +45,7 @@ FuseMsg*
|
||||||
readfusemsg(void)
|
readfusemsg(void)
|
||||||
{
|
{
|
||||||
FuseMsg *m;
|
FuseMsg *m;
|
||||||
int n;
|
int n, nn;
|
||||||
|
|
||||||
m = allocfusemsg();
|
m = allocfusemsg();
|
||||||
errno = 0;
|
errno = 0;
|
||||||
|
|
@ -173,10 +173,13 @@ readfusemsg(void)
|
||||||
goto bad;
|
goto bad;
|
||||||
break;
|
break;
|
||||||
case FUSE_SETXATTR:
|
case FUSE_SETXATTR:
|
||||||
/* struct and two strings */
|
/* struct, one string, and one binary blob */
|
||||||
if(m->hdr->len <= sizeof(struct fuse_setxattr_in)
|
if(m->hdr->len <= sizeof(struct fuse_setxattr_in))
|
||||||
|| ((char*)m->tx)[m->hdr->len-1] != 0
|
goto bad;
|
||||||
|| memchr((uchar*)m->tx+sizeof(struct fuse_setxattr_in), 0, m->hdr->len-sizeof(struct fuse_setxattr_in)-1) == 0)
|
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;
|
goto bad;
|
||||||
break;
|
break;
|
||||||
case FUSE_GETXATTR:
|
case FUSE_GETXATTR:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue