]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/kern/kern_exec.c
xnu-517.7.7.tar.gz
[apple/xnu.git] / bsd / kern / kern_exec.c
index c39e7ecc2f7a1c09d2e028065992ab0ce47ab86e..298e00dbfe546803d9bc23f9ce471d6dd0f7ec5b 100644 (file)
@@ -1,24 +1,21 @@
 /*
- * Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * The contents of this file constitute Original Code as defined in and
+ * are subject to the Apple Public Source License Version 1.1 (the
+ * "License").  You may not use this file except in compliance with the
+ * License.  Please obtain a copy of the License at
+ * http://www.apple.com/publicsource and read it before using this file.
  * 
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- * 
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * This Original Code and all software distributed under the License are
+ * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
+ * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
+ * License for the specific language governing rights and limitations
+ * under the License.
  * 
  * @APPLE_LICENSE_HEADER_END@
  */
 #include <sys/stat.h>
 #include <sys/uio.h>
 #include <sys/acct.h>
-#include <sys/kern_audit.h>
 #include <sys/exec.h>
 #include <sys/kdebug.h>
 #include <sys/signal.h>
 #include <sys/aio_kern.h>
 
+#include <bsm/audit_kernel.h>
+
 #include <mach/vm_param.h>
 
 #include <vm/vm_map.h>
@@ -114,6 +112,7 @@ extern vm_map_t vm_map_switch(vm_map_t    map); /* XXX */
 #include <machine/vmparam.h>
 #if KTRACE   
 #include <sys/ktrace.h>
+#include <sys/ubc.h>
 #endif
 
 int    app_profile = 0;
@@ -802,6 +801,9 @@ again:
                        struct vnode *tvp = p->p_tracep;
                        p->p_tracep = NULL;
                        p->p_traceflag = 0;
+
+                       if (UBCINFOEXISTS(tvp))
+                               ubc_rele(tvp);
                        vrele(tvp);
                }
 #endif
@@ -818,7 +820,6 @@ again:
                 */
                ipc_task_reset(task);
 
-               set_security_token(p);
                p->p_flag |= P_SUGID;
 
                /* Radar 2261856; setuid security hole fix */
@@ -856,6 +857,7 @@ again:
        }
        p->p_cred->p_svuid = p->p_ucred->cr_uid;
        p->p_cred->p_svgid = p->p_ucred->cr_gid;
+       set_security_token(p);
 
        KNOTE(&p->p_klist, NOTE_EXEC);