[BACK]Return to vfs_syscalls.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / kern

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/kern/vfs_syscalls.c between version 1.314 and 1.315

version 1.314, 2007/05/17 00:46:30 version 1.315, 2007/05/19 22:11:23
Line 69  __KERNEL_RCSID(0, "$NetBSD$");
Line 69  __KERNEL_RCSID(0, "$NetBSD$");
 #ifdef FILEASSOC  #ifdef FILEASSOC
 #include <sys/fileassoc.h>  #include <sys/fileassoc.h>
 #endif /* FILEASSOC */  #endif /* FILEASSOC */
 #if NVERIEXEC > 0  
 #include <sys/verified_exec.h>  #include <sys/verified_exec.h>
 #include <sys/syslog.h>  
 #endif /* NVERIEXEC > 0 */  
 #include <sys/kauth.h>  #include <sys/kauth.h>
   
 #include <miscfs/genfs/genfs.h>  #include <miscfs/genfs/genfs.h>
Line 1752  sys_mknod(struct lwp *l, void *v, regist
Line 1749  sys_mknod(struct lwp *l, void *v, regist
         struct vnode *vp;          struct vnode *vp;
         struct vattr vattr;          struct vattr vattr;
         int error, optype;          int error, optype;
         char *path;  
         struct nameidata nd;          struct nameidata nd;
           char *path;
           const char *cpath;
           enum uio_seg seg = UIO_USERSPACE;
   
         if ((error = kauth_authorize_system(l->l_cred, KAUTH_SYSTEM_MKNOD,          if ((error = kauth_authorize_system(l->l_cred, KAUTH_SYSTEM_MKNOD,
             0, NULL, NULL, NULL)) != 0)              0, NULL, NULL, NULL)) != 0)
                 return (error);                  return (error);
   
         optype = VOP_MKNOD_DESCOFFSET;          optype = VOP_MKNOD_DESCOFFSET;
         path = PNBUF_GET();  
         error = copyinstr(SCARG(uap, path), path, MAXPATHLEN, NULL);          VERIEXEC_PATH_GET(SCARG(uap, path), seg, cpath, path);
         if (error)          NDINIT(&nd, CREATE, LOCKPARENT | TRYEMULROOT, seg, cpath, l);
                 goto out;  
         NDINIT(&nd, CREATE, LOCKPARENT | TRYEMULROOT, UIO_SYSSPACE, path, l);  
         if ((error = namei(&nd)) != 0)          if ((error = namei(&nd)) != 0)
                 goto out;                  goto out;
         vp = nd.ni_vp;          vp = nd.ni_vp;
Line 1837  sys_mknod(struct lwp *l, void *v, regist
Line 1835  sys_mknod(struct lwp *l, void *v, regist
                         vrele(vp);                          vrele(vp);
         }          }
 out:  out:
         PNBUF_PUT(path);          VERIEXEC_PATH_PUT(path);
         return (error);          return (error);
 }  }
   
Line 2014  sys_unlink(struct lwp *l, void *v, regis
Line 2012  sys_unlink(struct lwp *l, void *v, regis
         struct vnode *vp;          struct vnode *vp;
         int error;          int error;
         struct nameidata nd;          struct nameidata nd;
 #if NVERIEXEC > 0          char *path;
         pathname_t pathbuf = NULL;          const char *cpath;
 #endif /* NVERIEXEC > 0 */          enum uio_seg seg = UIO_USERSPACE;
   
 #if NVERIEXEC > 0  
         error = pathname_get(SCARG(uap, path), UIO_USERSPACE, &pathbuf);  
         if (error)  
                 return (error);  
   
         NDINIT(&nd, DELETE, LOCKPARENT | LOCKLEAF, UIO_SYSSPACE,          VERIEXEC_PATH_GET(SCARG(uap, path), seg, cpath, path);
             pathname_path(pathbuf), l);          NDINIT(&nd, DELETE, LOCKPARENT | LOCKLEAF | TRYEMULROOT, seg, cpath, l);
 #else  
         NDINIT(&nd, DELETE, LOCKPARENT | LOCKLEAF | TRYEMULROOT, UIO_USERSPACE,  
             SCARG(uap, path), l);  
 #endif /* NVERIEXEC > 0 */  
   
         if ((error = namei(&nd)) != 0)          if ((error = namei(&nd)) != 0)
                 goto out;                  goto out;
Line 2050  sys_unlink(struct lwp *l, void *v, regis
Line 2039  sys_unlink(struct lwp *l, void *v, regis
   
 #if NVERIEXEC > 0  #if NVERIEXEC > 0
         /* Handle remove requests for veriexec entries. */          /* Handle remove requests for veriexec entries. */
         if (!error)          if ((error = veriexec_removechk(l, nd.ni_vp, nd.ni_dirp)) != 0) {
                 error = veriexec_removechk(vp, pathname_path(pathbuf), l);  
   
         if (error) {  
                 VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd);                  VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd);
                 if (nd.ni_dvp == vp)                  if (nd.ni_dvp == vp)
                         vrele(nd.ni_dvp);                          vrele(nd.ni_dvp);
Line 2071  sys_unlink(struct lwp *l, void *v, regis
Line 2057  sys_unlink(struct lwp *l, void *v, regis
 #endif /* FILEASSOC */  #endif /* FILEASSOC */
         error = VOP_REMOVE(nd.ni_dvp, nd.ni_vp, &nd.ni_cnd);          error = VOP_REMOVE(nd.ni_dvp, nd.ni_vp, &nd.ni_cnd);
 out:  out:
 #if NVERIEXEC > 0          VERIEXEC_PATH_PUT(path);
         pathname_put(pathbuf);  
 #endif /* NVERIEXEC > 0 */  
         return (error);          return (error);
 }  }
   
Line 3340  rename_files(const char *from, const cha
Line 3324  rename_files(const char *from, const cha
                 f2 = malloc(tond.ni_cnd.cn_namelen + 1, M_TEMP, M_WAITOK);                  f2 = malloc(tond.ni_cnd.cn_namelen + 1, M_TEMP, M_WAITOK);
                 strlcpy(f1, tond.ni_cnd.cn_nameptr, tond.ni_cnd.cn_namelen);                  strlcpy(f1, tond.ni_cnd.cn_nameptr, tond.ni_cnd.cn_namelen);
   
                 error = veriexec_renamechk(fvp, f1, tvp, f2, l);                  error = veriexec_renamechk(l, fvp, f1, tvp, f2);
   
                 free(f1, M_TEMP);                  free(f1, M_TEMP);
                 free(f2, M_TEMP);                  free(f2, M_TEMP);

Legend:
Removed from v.1.314  
changed lines
  Added in v.1.315

CVSweb <webmaster@jp.NetBSD.org>