[Libsysio-commit] HEAD: libsysio/src chmod.c init.c open.c
Brought to you by:
lward
From: Lee W. <lw...@us...> - 2004-02-25 16:39:06
|
Update of /cvsroot/libsysio/libsysio/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23863/src Modified Files: chmod.c init.c open.c Log Message: All mode bit masks were incorrect. Need to preserve ISUID, ISGID, ISVTX bits. Index: chmod.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/chmod.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -w -b -B -p -r1.6 -r1.7 --- chmod.c 26 Jan 2004 16:34:54 -0000 1.6 +++ chmod.c 25 Feb 2004 16:23:59 -0000 1.7 @@ -62,7 +62,7 @@ do_chmod(struct pnode *pno, struct inode unsigned mask; (void )memset(&stbuf, 0, sizeof(struct intnl_stat)); - stbuf.st_mode = mode & 0777; + stbuf.st_mode = mode & 07777; mask = SETATTR_MODE; err = _sysio_setattr(pno, ino, mask, &stbuf); return err; Index: init.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/init.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -w -b -B -p -r1.7 -r1.8 --- init.c 14 Feb 2004 19:42:59 -0000 1.7 +++ init.c 25 Feb 2004 16:24:00 -0000 1.8 @@ -300,7 +300,7 @@ do_creat(char *args) if (*cp || perms < 0 || (perms == LONG_MAX && errno == ERANGE) || - ((unsigned)perms & ~0777)) + ((unsigned)perms & ~07777)) return -EINVAL; if (v[3].value) { owner = strtol(v[3].value, (char **)&cp, 0); @@ -532,7 +532,7 @@ do_chmd(char *args) if (*cp || perms < 0 || (perms == LONG_MAX && errno == ERANGE) || - ((unsigned)perms & ~0777)) + ((unsigned)perms & ~07777)) return -EINVAL; (void )memset(&stbuf, 0, sizeof(stbuf)); stbuf.st_mode = (mode_t)perms; Index: open.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/open.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -w -b -B -p -r1.13 -r1.14 --- open.c 26 Jan 2004 16:34:54 -0000 1.13 +++ open.c 25 Feb 2004 16:24:00 -0000 1.14 @@ -157,7 +157,7 @@ open(const char *path, int flags, ...) va_arg(ap, int); #endif va_end(ap); - mode &= ~_sysio_umask; /* apply umask */ + mode &= ~_sysio_umask & 0777; /* apply umask */ if (flags & O_EXCL) { /* |