PERFORCE change 105117 for review

Robert Watson rwatson at FreeBSD.org
Sat Aug 26 17:33:25 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=105117

Change 105117 by rwatson at rwatson_zoo on 2006/08/26 17:03:44

	Integrate TrustedBSD base from FreeBSD CVS, primarily to loop back
	the recent OpenBSM update in CVS:
	
	- OpenBSM 1.0a9.
	- cp -l
	- security/410.logincheck
	- restore chown fixes for short symlinks
	- More armage.
	- User thread library priority propagation
	- bluetooth updated for socket changes
	- Misc bug fixes, changes, etc.

Affected files ...

.. //depot/projects/trustedbsd/base/bin/cp/cp.1#11 integrate
.. //depot/projects/trustedbsd/base/bin/cp/cp.c#18 integrate
.. //depot/projects/trustedbsd/base/bin/cp/extern.h#10 integrate
.. //depot/projects/trustedbsd/base/bin/cp/utils.c#16 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/FREEBSD-upgrade#5 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/HISTORY#4 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/README#5 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/VERSION#4 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/bin/auditd/auditd.c#5 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/bin/auditfilterd/auditfilterd.c#2 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/bin/auditfilterd/auditfilterd.h#2 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/bin/auditfilterd/auditfilterd_conf.c#2 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/bsm/audit.h#4 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/bsm/audit_filter.h#2 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/bsm/audit_internal.h#3 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/bsm/audit_kevents.h#3 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/bsm/audit_record.h#4 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/bsm/libbsm.h#6 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/config/config.h#3 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/config/config.h.in#3 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/configure#4 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/configure.ac#4 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/etc/audit_event#4 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/libbsm/au_token.3#3 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/libbsm/bsm_audit.c#4 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/libbsm/bsm_event.c#2 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/libbsm/bsm_io.c#4 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/libbsm/bsm_token.c#5 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/man/audit.log.5#3 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/modules/auditfilter_noop/auditfilter_noop.c#2 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/test/bsm/generate.c#3 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/tools/Makefile.am#2 integrate
.. //depot/projects/trustedbsd/base/contrib/openbsm/tools/Makefile.in#2 integrate
.. //depot/projects/trustedbsd/base/etc/defaults/periodic.conf#20 integrate
.. //depot/projects/trustedbsd/base/etc/etc.alpha/ttys#4 delete
.. //depot/projects/trustedbsd/base/etc/periodic/security/410.logincheck#1 branch
.. //depot/projects/trustedbsd/base/etc/periodic/security/Makefile#6 integrate
.. //depot/projects/trustedbsd/base/gnu/usr.bin/gdb/Makefile#3 integrate
.. //depot/projects/trustedbsd/base/gnu/usr.bin/gdb/kgdb/kthr.c#4 integrate
.. //depot/projects/trustedbsd/base/gnu/usr.bin/gdb/kgdb/trgt_powerpc.c#1 branch
.. //depot/projects/trustedbsd/base/lib/libc/sys/kqueue.2#14 integrate
.. //depot/projects/trustedbsd/base/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml#108 integrate
.. //depot/projects/trustedbsd/base/sbin/restore/tape.c#15 integrate
.. //depot/projects/trustedbsd/base/share/man/man9/VFS_ROOT.9#6 integrate
.. //depot/projects/trustedbsd/base/share/man/man9/ithread.9#6 integrate
.. //depot/projects/trustedbsd/base/share/mk/bsd.lib.mk#30 integrate
.. //depot/projects/trustedbsd/base/sys/amd64/linux32/linux32_machdep.c#9 integrate
.. //depot/projects/trustedbsd/base/sys/arm/arm/busdma_machdep.c#12 integrate
.. //depot/projects/trustedbsd/base/sys/arm/arm/cpufunc.c#7 integrate
.. //depot/projects/trustedbsd/base/sys/arm/arm/elf_trampoline.c#6 integrate
.. //depot/projects/trustedbsd/base/sys/arm/arm/identcpu.c#7 integrate
.. //depot/projects/trustedbsd/base/sys/arm/at91/if_ate.c#9 integrate
.. //depot/projects/trustedbsd/base/sys/arm/conf/EP80219#1 branch
.. //depot/projects/trustedbsd/base/sys/arm/include/armreg.h#4 integrate
.. //depot/projects/trustedbsd/base/sys/arm/include/cpuconf.h#6 integrate
.. //depot/projects/trustedbsd/base/sys/arm/include/cpufunc.h#6 integrate
.. //depot/projects/trustedbsd/base/sys/arm/include/elf.h#5 integrate
.. //depot/projects/trustedbsd/base/sys/arm/include/vmparam.h#6 integrate
.. //depot/projects/trustedbsd/base/sys/arm/xscale/i80321/ep80219_machdep.c#1 branch
.. //depot/projects/trustedbsd/base/sys/arm/xscale/i80321/files.ep80219#1 branch
.. //depot/projects/trustedbsd/base/sys/arm/xscale/i80321/files.i80219#1 branch
.. //depot/projects/trustedbsd/base/sys/arm/xscale/i80321/i80321_intr.h#3 integrate
.. //depot/projects/trustedbsd/base/sys/arm/xscale/i80321/i80321_pci.c#7 integrate
.. //depot/projects/trustedbsd/base/sys/arm/xscale/i80321/i80321reg.h#3 integrate
.. //depot/projects/trustedbsd/base/sys/arm/xscale/i80321/i80321var.h#4 integrate
.. //depot/projects/trustedbsd/base/sys/arm/xscale/i80321/iq31244_machdep.c#12 integrate
.. //depot/projects/trustedbsd/base/sys/arm/xscale/i80321/iq80321.c#10 integrate
.. //depot/projects/trustedbsd/base/sys/arm/xscale/i80321/iq80321reg.h#3 integrate
.. //depot/projects/trustedbsd/base/sys/arm/xscale/i80321/std.ep80219#1 branch
.. //depot/projects/trustedbsd/base/sys/arm/xscale/i80321/std.i80219#1 branch
.. //depot/projects/trustedbsd/base/sys/bsm/audit.h#5 integrate
.. //depot/projects/trustedbsd/base/sys/bsm/audit_internal.h#3 integrate
.. //depot/projects/trustedbsd/base/sys/bsm/audit_kevents.h#5 integrate
.. //depot/projects/trustedbsd/base/sys/bsm/audit_record.h#4 integrate
.. //depot/projects/trustedbsd/base/sys/compat/linux/linux_futex.c#3 integrate
.. //depot/projects/trustedbsd/base/sys/compat/linux/linux_misc.c#45 integrate
.. //depot/projects/trustedbsd/base/sys/conf/files.powerpc#24 integrate
.. //depot/projects/trustedbsd/base/sys/conf/options.arm#12 integrate
.. //depot/projects/trustedbsd/base/sys/dev/ata/ata-raid.c#39 integrate
.. //depot/projects/trustedbsd/base/sys/dev/fb/creator.c#11 integrate
.. //depot/projects/trustedbsd/base/sys/i386/linux/linux_machdep.c#23 integrate
.. //depot/projects/trustedbsd/base/sys/ia64/include/vmparam.h#12 integrate
.. //depot/projects/trustedbsd/base/sys/kern/init_main.c#44 integrate
.. //depot/projects/trustedbsd/base/sys/kern/kern_thr.c#21 integrate
.. //depot/projects/trustedbsd/base/sys/kern/kern_umtx.c#16 integrate
.. //depot/projects/trustedbsd/base/sys/kern/sched_4bsd.c#27 integrate
.. //depot/projects/trustedbsd/base/sys/kern/sched_core.c#3 integrate
.. //depot/projects/trustedbsd/base/sys/kern/sched_ule.c#30 integrate
.. //depot/projects/trustedbsd/base/sys/kern/subr_witness.c#58 integrate
.. //depot/projects/trustedbsd/base/sys/kern/vfs_mount.c#51 integrate
.. //depot/projects/trustedbsd/base/sys/net/if_bridge.c#15 integrate
.. //depot/projects/trustedbsd/base/sys/net/if_ethersubr.c#50 integrate
.. //depot/projects/trustedbsd/base/sys/net/if_vlan.c#39 integrate
.. //depot/projects/trustedbsd/base/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c#18 integrate
.. //depot/projects/trustedbsd/base/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c#15 integrate
.. //depot/projects/trustedbsd/base/sys/powerpc/include/gdb_machdep.h#1 branch
.. //depot/projects/trustedbsd/base/sys/powerpc/include/vmparam.h#3 integrate
.. //depot/projects/trustedbsd/base/sys/powerpc/powerpc/gdb_machdep.c#1 branch
.. //depot/projects/trustedbsd/base/sys/security/audit/audit_bsm.c#7 integrate
.. //depot/projects/trustedbsd/base/sys/security/audit/audit_bsm_token.c#5 integrate
.. //depot/projects/trustedbsd/base/sys/sys/kobj.h#6 integrate
.. //depot/projects/trustedbsd/base/sys/sys/proc.h#76 integrate
.. //depot/projects/trustedbsd/base/sys/sys/sched.h#13 integrate
.. //depot/projects/trustedbsd/base/sys/sys/umtx.h#8 integrate
.. //depot/projects/trustedbsd/base/sys/vm/vm_contig.c#31 integrate
.. //depot/projects/trustedbsd/base/sys/vm/vm_page.h#33 integrate
.. //depot/projects/trustedbsd/base/sys/vm/vm_pageq.c#21 integrate

Differences ...

==== //depot/projects/trustedbsd/base/bin/cp/cp.1#11 (text+ko) ====

@@ -30,9 +30,9 @@
 .\" SUCH DAMAGE.
 .\"
 .\"	@(#)cp.1	8.3 (Berkeley) 4/18/94
-.\" $FreeBSD: src/bin/cp/cp.1,v 1.33 2005/02/25 00:40:46 trhodes Exp $
+.\" $FreeBSD: src/bin/cp/cp.1,v 1.35 2006/08/25 09:58:13 ru Exp $
 .\"
-.Dd February 23, 2005
+.Dd August 24, 2006
 .Dt CP 1
 .Os
 .Sh NAME
@@ -45,7 +45,7 @@
 .Op Fl H | Fl L | Fl P
 .Oc
 .Op Fl f | i | n
-.Op Fl pv
+.Op Fl lpv
 .Ar source_file target_file
 .Nm
 .Oo
@@ -53,7 +53,7 @@
 .Op Fl H | Fl L | Fl P
 .Oc
 .Op Fl f | i | n
-.Op Fl pv
+.Op Fl lpv
 .Ar source_file ... target_directory
 .Sh DESCRIPTION
 In the first synopsis form, the
@@ -144,6 +144,8 @@
 or
 .Fl n
 options.)
+.It Fl l
+Create hard links to regular files in a hierarchy instead of copying.
 .It Fl n
 Do not overwrite an existing file.
 (The

==== //depot/projects/trustedbsd/base/bin/cp/cp.c#18 (text+ko) ====

@@ -42,7 +42,7 @@
 #endif /* not lint */
 #endif
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/cp/cp.c,v 1.53 2006/07/04 20:52:36 maxim Exp $");
+__FBSDID("$FreeBSD: src/bin/cp/cp.c,v 1.54 2006/08/24 20:45:38 julian Exp $");
 
 /*
  * Cp copies source files to target files.
@@ -83,7 +83,7 @@
 
 PATH_T to = { to.p_path, emptystring, "" };
 
-int fflag, iflag, nflag, pflag, vflag;
+int fflag, iflag, lflag, nflag, pflag, vflag;
 static int Rflag, rflag;
 volatile sig_atomic_t info;
 
@@ -102,7 +102,7 @@
 	char *target;
 
 	Hflag = Lflag = Pflag = 0;
-	while ((ch = getopt(argc, argv, "HLPRfinprv")) != -1)
+	while ((ch = getopt(argc, argv, "HLPRfinprvl")) != -1)
 		switch (ch) {
 		case 'H':
 			Hflag = 1;
@@ -140,6 +140,9 @@
 		case 'v':
 			vflag = 1;
 			break;
+		case 'l':
+			lflag = 1;
+			break;
 		default:
 			usage();
 			break;
@@ -457,6 +460,9 @@
 					badcp = rval = 1;
 			}
 			break;
+		case S_IFSOCK:
+			warnx("%s is a socket (not copied).",
+				    curr->fts_path);
 		case S_IFIFO:
 			if (Rflag) {
 				if (copy_fifo(curr->fts_statp, !dne))

==== //depot/projects/trustedbsd/base/bin/cp/extern.h#10 (text+ko) ====

@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)extern.h	8.2 (Berkeley) 4/1/94
- * $FreeBSD: src/bin/cp/extern.h,v 1.20 2005/09/05 04:36:08 csjp Exp $
+ * $FreeBSD: src/bin/cp/extern.h,v 1.21 2006/08/24 20:45:38 julian Exp $
  */
 
 typedef struct {
@@ -37,7 +37,7 @@
 } PATH_T;
 
 extern PATH_T to;
-extern int fflag, iflag, nflag, pflag, vflag;
+extern int fflag, iflag, lflag, nflag, pflag, vflag;
 extern volatile sig_atomic_t info;
 
 __BEGIN_DECLS

==== //depot/projects/trustedbsd/base/bin/cp/utils.c#16 (text+ko) ====

@@ -33,7 +33,7 @@
 #endif
 #endif /* not lint */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/cp/utils.c,v 1.46 2005/09/05 04:36:08 csjp Exp $");
+__FBSDID("$FreeBSD: src/bin/cp/utils.c,v 1.49 2006/08/25 09:58:13 ru Exp $");
 
 #include <sys/types.h>
 #include <sys/acl.h>
@@ -61,7 +61,7 @@
 {
 	static char buf[MAXBSIZE];
 	struct stat *fs;
-	int ch, checkch, from_fd, rcount, rval, to_fd;
+	int ch, checkch, from_fd = 0, rcount, rval, to_fd = 0;
 	ssize_t wcount;
 	size_t wresid;
 	size_t wtotal;
@@ -109,15 +109,20 @@
 		    /* remove existing destination file name, 
 		     * create a new file  */
 		    (void)unlink(to.p_path);
-		    to_fd = open(to.p_path, O_WRONLY | O_TRUNC | O_CREAT,
-				 fs->st_mode & ~(S_ISUID | S_ISGID));
-		} else 
-		    /* overwrite existing destination file name */
-		    to_fd = open(to.p_path, O_WRONLY | O_TRUNC, 0);
-	} else
-		to_fd = open(to.p_path, O_WRONLY | O_TRUNC | O_CREAT,
-		    fs->st_mode & ~(S_ISUID | S_ISGID));
-
+				if (!lflag)
+		    	to_fd = open(to.p_path, O_WRONLY | O_TRUNC | O_CREAT,
+				  fs->st_mode & ~(S_ISUID | S_ISGID));
+		} else {
+				if (!lflag)
+		    	/* overwrite existing destination file name */
+		    	to_fd = open(to.p_path, O_WRONLY | O_TRUNC, 0);
+		}
+	} else {
+		if (!lflag)
+			to_fd = open(to.p_path, O_WRONLY | O_TRUNC | O_CREAT,
+		  fs->st_mode & ~(S_ISUID | S_ISGID));
+	}
+	
 	if (to_fd == -1) {
 		warn("%s", to.p_path);
 		(void)close(from_fd);
@@ -126,77 +131,85 @@
 
 	rval = 0;
 
-	/*
-	 * Mmap and write if less than 8M (the limit is so we don't totally
-	 * trash memory on big files.  This is really a minor hack, but it
-	 * wins some CPU back.
-	 */
+	if (!lflag) {
+		/*
+		 * Mmap and write if less than 8M (the limit is so we don't totally
+		 * trash memory on big files.  This is really a minor hack, but it
+		 * wins some CPU back.
+		 */
 #ifdef VM_AND_BUFFER_CACHE_SYNCHRONIZED
-	if (S_ISREG(fs->st_mode) && fs->st_size > 0 &&
-	    fs->st_size <= 8 * 1048576) {
-		if ((p = mmap(NULL, (size_t)fs->st_size, PROT_READ,
-		    MAP_SHARED, from_fd, (off_t)0)) == MAP_FAILED) {
-			warn("%s", entp->fts_path);
-			rval = 1;
-		} else {
-			wtotal = 0;
-			for (bufp = p, wresid = fs->st_size; ;
-			    bufp += wcount, wresid -= (size_t)wcount) {
-				wcount = write(to_fd, bufp, wresid);
-				wtotal += wcount;
-				if (info) {
-					info = 0;
-					(void)fprintf(stderr,
-						"%s -> %s %3d%%\n",
-						entp->fts_path, to.p_path,
-						cp_pct(wtotal, fs->st_size));
-						
-				}
-				if (wcount >= (ssize_t)wresid || wcount <= 0)
-					break;
-			}
-			if (wcount != (ssize_t)wresid) {
-				warn("%s", to.p_path);
-				rval = 1;
-			}
-			/* Some systems don't unmap on close(2). */
-			if (munmap(p, fs->st_size) < 0) {
+		if (S_ISREG(fs->st_mode) && fs->st_size > 0 &&
+	    	fs->st_size <= 8 * 1048576) {
+			if ((p = mmap(NULL, (size_t)fs->st_size, PROT_READ,
+		    	MAP_SHARED, from_fd, (off_t)0)) == MAP_FAILED) {
 				warn("%s", entp->fts_path);
 				rval = 1;
+			} else {
+				wtotal = 0;
+				for (bufp = p, wresid = fs->st_size; ;
+			    	bufp += wcount, wresid -= (size_t)wcount) {
+					wcount = write(to_fd, bufp, wresid);
+					wtotal += wcount;
+					if (info) {
+						info = 0;
+						(void)fprintf(stderr,
+							"%s -> %s %3d%%\n",
+							entp->fts_path, to.p_path,
+							cp_pct(wtotal, fs->st_size));
+
+					}
+					if (wcount >= (ssize_t)wresid || wcount <= 0)
+						break;
+				}
+				if (wcount != (ssize_t)wresid) {
+					warn("%s", to.p_path);
+					rval = 1;
+				}
+				/* Some systems don't unmap on close(2). */
+				if (munmap(p, fs->st_size) < 0) {
+					warn("%s", entp->fts_path);
+					rval = 1;
+				}
 			}
-		}
-	} else
+		} else
 #endif
-	{
-		wtotal = 0;
-		while ((rcount = read(from_fd, buf, MAXBSIZE)) > 0) {
-			for (bufp = buf, wresid = rcount; ;
-			    bufp += wcount, wresid -= wcount) {
-				wcount = write(to_fd, bufp, wresid);
-				wtotal += wcount;
-				if (info) {
-					info = 0;
-					(void)fprintf(stderr,
-						"%s -> %s %3d%%\n",
-						entp->fts_path, to.p_path,
-						cp_pct(wtotal, fs->st_size));
-						
+		{
+			wtotal = 0;
+			while ((rcount = read(from_fd, buf, MAXBSIZE)) > 0) {
+				for (bufp = buf, wresid = rcount; ;
+			    	bufp += wcount, wresid -= wcount) {
+					wcount = write(to_fd, bufp, wresid);
+					wtotal += wcount;
+					if (info) {
+						info = 0;
+						(void)fprintf(stderr,
+							"%s -> %s %3d%%\n",
+							entp->fts_path, to.p_path,
+							cp_pct(wtotal, fs->st_size));
+
+					}
+					if (wcount >= (ssize_t)wresid || wcount <= 0)
+						break;
 				}
-				if (wcount >= (ssize_t)wresid || wcount <= 0)
+				if (wcount != (ssize_t)wresid) {
+					warn("%s", to.p_path);
+					rval = 1;
 					break;
+				}
 			}
-			if (wcount != (ssize_t)wresid) {
-				warn("%s", to.p_path);
+			if (rcount < 0) {
+				warn("%s", entp->fts_path);
 				rval = 1;
-				break;
 			}
 		}
-		if (rcount < 0) {
-			warn("%s", entp->fts_path);
+	} else {
+		if (link(entp->fts_path, to.p_path)) {
+			warn("%s", to.p_path);
 			rval = 1;
 		}
 	}
-
+	(void)close(from_fd);
+	
 	/*
 	 * Don't remove the target even after an error.  The target might
 	 * not be a regular file, or its attributes might be important,
@@ -204,14 +217,16 @@
 	 * to remove it if we created it and its length is 0.
 	 */
 
-	if (pflag && setfile(fs, to_fd))
-		rval = 1;
-	if (pflag && preserve_fd_acls(from_fd, to_fd) != 0)
-		rval = 1;
-	(void)close(from_fd);
-	if (close(to_fd)) {
-		warn("%s", to.p_path);
-		rval = 1;
+	if (!lflag) {
+		if (pflag && setfile(fs, to_fd))
+			rval = 1;
+		if (pflag && preserve_fd_acls(from_fd, to_fd) != 0)
+			rval = 1;
+		(void)close(from_fd);
+		if (close(to_fd)) {
+			warn("%s", to.p_path);
+			rval = 1;
+		}
 	}
 	return (rval);
 }
@@ -411,8 +426,8 @@
 {
 
 	(void)fprintf(stderr, "%s\n%s\n",
-"usage: cp [-R [-H | -L | -P]] [-f | -i | -n] [-pv] source_file target_file",
-"       cp [-R [-H | -L | -P]] [-f | -i | -n] [-pv] source_file ... "
+"usage: cp [-R [-H | -L | -P]] [-f | -i | -n] [-lpv] source_file target_file",
+"       cp [-R [-H | -L | -P]] [-f | -i | -n] [-lpv] source_file ... "
 "target_directory");
 	exit(EX_USAGE);
 }

==== //depot/projects/trustedbsd/base/contrib/openbsm/FREEBSD-upgrade#5 (text) ====

@@ -23,7 +23,7 @@
 - Run configure, commit src/contrib/openbsm/config/config.h.
 - Replication of src/contrib/openbsm/bsm changes into src/sys/bsm.
 - Possible updates to src/sys/security/audit, especially relating to
-  bsm_token.c.
+  audit_bsm_token.c.
 - Update any library, tool, or etc BSD Makefiles to add new files,
   defines, or other generally useful or necessary things.
 
@@ -39,6 +39,10 @@
 Propagation of changes to src/sys/{bsm,security/audit} is something that
 requires careful coordination and attention to detail.  These files are
 not on CVS vendor branches, but do have the same local vs. vendor merge
-issues.
+issues.  Remember that contrib/openbsm (and the rest of the system) will
+be built with the version of the bsm/ include files in src/sys/bsm, not
+the version in contrib/openbsm/bsm, so buildworld tests before committing
+are necessary, and the commits to various parts of the system must be
+made in close succession.
 
-$FreeBSD: src/contrib/openbsm/FREEBSD-upgrade,v 1.5 2006/06/27 17:55:38 rwatson Exp $
+$FreeBSD: src/contrib/openbsm/FREEBSD-upgrade,v 1.6 2006/08/26 10:35:54 rwatson Exp $

==== //depot/projects/trustedbsd/base/contrib/openbsm/HISTORY#4 (text) ====

@@ -1,3 +1,31 @@
+OpenBSM 1.0 alpha 9
+
+- Rename many OpenBSM-specific constants and API elements containing the
+  strings "BSM" and "bsm" to "AUDIT" and "audit", observing that this is true
+  for almost all existing constants and APIs.
+- Instead of passing a per-instance cookie directly into all audit filter
+  APIs, pass in the audit filter daemon state pointer, which is then used by
+  the module using an audit_filter_{get,set}cookie() API.  This will allow
+  future service APIs provided by the filter daemon to maintain their own
+  state -- for example, per-module preselection state.
+
+OpenBSM 1.0 alpha 8
+
+- Correct typo in definition of AUR_INT.
+- Adopt OpenSolaris constant values for AUDIT_* configuration flags.
+- Arguments to au_to_exec_args() and au_to_exec_env() no longer const.
+- Add kernel versions of au_to_exec_args() and au_to_exec_env().
+- Fix exec argument type that is printed for env strings from 'arg' to 'env'.
+- New OpenBSM token version number assigned, constants added for other
+  commonly seen version numbers.
+- OpenBSM-specific events assigned numbers in the 43xxx range to avoid future
+  collisions with Solaris.  Darwin events renamed to AUE_DARWIN_foo, as they
+  are now deprecated numberings.
+- autoconf now detects clock_gettime(), which is not available on Darwin.
+- praudit output fixes relating to arg32 and arg64 tokens.
+- Maximum record size updated to 64k-1 to match Solaris record size limit.
+- Various style and comment cleanups in include files.
+
 OpenBSM 1.0 alpha 7
 
 - Adopted Solaris-compatible format for subject32_ex and subject64_ex
@@ -175,4 +203,4 @@
   to support reloading of kernel event table.
 - Allow comments in /etc/security configuration files.
 
-$P4: //depot/projects/trustedbsd/openbsm/HISTORY#15 $
+$P4: //depot/projects/trustedbsd/openbsm/HISTORY#25 $

==== //depot/projects/trustedbsd/base/contrib/openbsm/README#5 (text) ====

@@ -74,6 +74,8 @@
     Olivier Houchard
     Christian Peron
     Martin Fong
+    Pawel Worach
+    Martin Englund
 
 In addition, Coverity, Inc.'s Prevent(tm) static analysis tool and Gimpel
 Software's FlexeLint tool were used to identify a number of bugs in the
@@ -95,4 +97,4 @@
 
     http://www.TrustedBSD.org/
 
-$P4: //depot/projects/trustedbsd/openbsm/README#17 $
+$P4: //depot/projects/trustedbsd/openbsm/README#19 $

==== //depot/projects/trustedbsd/base/contrib/openbsm/VERSION#4 (text) ====

@@ -1,1 +1,1 @@
-OPENBSM_1_0_ALPHA_7
+OPENBSM_1_0_ALPHA_9

==== //depot/projects/trustedbsd/base/contrib/openbsm/bin/auditd/auditd.c#5 (text) ====

@@ -30,7 +30,7 @@
  *
  * @APPLE_BSD_LICENSE_HEADER_END@
  *
- * $P4: //depot/projects/trustedbsd/openbsm/bin/auditd/auditd.c#16 $
+ * $P4: //depot/projects/trustedbsd/openbsm/bin/auditd/auditd.c#17 $
  */
 
 #include <sys/types.h>
@@ -88,7 +88,7 @@
  * Free our local list of directory names.
  */
 static void
-free_dir_q()
+free_dir_q(void)
 {
 	struct dir_ent *dirent;
 

==== //depot/projects/trustedbsd/base/contrib/openbsm/bin/auditfilterd/auditfilterd.c#2 (text) ====

@@ -25,7 +25,16 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $P4: //depot/projects/trustedbsd/openbsm/bin/auditfilterd/auditfilterd.c#6 $
+ * $P4: //depot/projects/trustedbsd/openbsm/bin/auditfilterd/auditfilterd.c#9 $
+ */
+
+/*
+ * Main file for the audit filter daemon, which presents audit records to a
+ * set of run-time registered loadable modules.  This is the main event loop
+ * of the daemon, which handles starting up, waiting for records, and
+ * presenting records to configured modules.  auditfilterd_conf.c handles the
+ * reading and management of the configuration, module list and module state,
+ * etc.
  */
 
 #include <sys/types.h>
@@ -106,13 +115,13 @@
  * Present raw BSM to a set of registered and interested filters.
  */
 static void
-present_bsmrecord(struct timespec *ts, u_char *data, u_int len)
+present_rawrecord(struct timespec *ts, u_char *data, u_int len)
 {
 	struct auditfilter_module *am;
 
 	TAILQ_FOREACH(am, &filter_list, am_list) {
-		if (am->am_bsmrecord != NULL)
-			(am->am_bsmrecord)(am->am_instance, ts, data, len);
+		if (am->am_rawrecord != NULL)
+			(am->am_rawrecord)(am, ts, data, len);
 	}
 }
 
@@ -140,8 +149,7 @@
 
 	TAILQ_FOREACH(am, &filter_list, am_list) {
 		if (am->am_record != NULL)
-			(am->am_record)(am->am_instance, ts, tokencount,
-			    tokens);
+			(am->am_record)(am, ts, tokencount, tokens);
 	}
 }
 
@@ -191,7 +199,7 @@
 			continue;
 		if (clock_gettime(CLOCK_REALTIME, &ts) < 0)
 			err(-1, "clock_gettime");
-		present_bsmrecord(&ts, buf, reclen);
+		present_rawrecord(&ts, buf, reclen);
 		present_tokens(&ts, buf, reclen);
 		free(buf);
 	}
@@ -241,7 +249,7 @@
 			continue;
 		if (clock_gettime(CLOCK_REALTIME, &ts) < 0)
 			err(-1, "clock_gettime");
-		present_bsmrecord(&ts, record, reclen);
+		present_rawrecord(&ts, record, reclen);
 		present_tokens(&ts, record, reclen);
 	}
 }

==== //depot/projects/trustedbsd/base/contrib/openbsm/bin/auditfilterd/auditfilterd.h#2 (text) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $P4: //depot/projects/trustedbsd/openbsm/bin/auditfilterd/auditfilterd.h#3 $
+ * $P4: //depot/projects/trustedbsd/openbsm/bin/auditfilterd/auditfilterd.h#5 $
  */
 
 #define	AUDITFILTERD_CONFFILE	"/etc/security/audit_filter"
@@ -53,11 +53,11 @@
 	/*
 	 * Fields provided by or extracted from the module.
 	 */
-	void						*am_instance;
+	void						*am_cookie;
 	audit_filter_attach_t				 am_attach;
 	audit_filter_reinit_t				 am_reinit;
 	audit_filter_record_t				 am_record;
-	audit_filter_bsmrecord_t			 am_bsmrecord;
+	audit_filter_rawrecord_t			 am_rawrecord;
 	audit_filter_detach_t				 am_detach;
 
 	/*

==== //depot/projects/trustedbsd/base/contrib/openbsm/bin/auditfilterd/auditfilterd_conf.c#2 (text) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $P4: //depot/projects/trustedbsd/openbsm/bin/auditfilterd/auditfilterd_conf.c#3 $
+ * $P4: //depot/projects/trustedbsd/openbsm/bin/auditfilterd/auditfilterd_conf.c#5 $
  */
 
 /*
@@ -38,6 +38,12 @@
  * Modules are in one of two states: attached, or detached.  If attach fails,
  * detach is not called because it was not attached.  If a module is attached
  * and a call to its reinit method fails, we will detach it.
+ *
+ * Modules are passed a (void *) reference to their configuration state so
+ * that they may pass this into any common APIs we provide which may rely on
+ * that state.  Currently, the only such API is the cookie API, which allows
+ * per-instance state to be maintained by a module.  In the future, this will
+ * also be used to support per-instance preselection state.
  */
 
 #include <sys/types.h>
@@ -105,8 +111,8 @@
 {
 
 	if (am->am_detach != NULL)
-		am->am_detach(am->am_instance);
-	am->am_instance = NULL;
+		am->am_detach(am);
+	am->am_cookie = NULL;
 	(void)dlclose(am->am_dlhandle);
 	am->am_dlhandle = NULL;
 }
@@ -149,21 +155,22 @@
 	am->am_attach = dlsym(am->am_dlhandle, AUDIT_FILTER_ATTACH_STRING);
 	am->am_reinit = dlsym(am->am_dlhandle, AUDIT_FILTER_REINIT_STRING);
 	am->am_record = dlsym(am->am_dlhandle, AUDIT_FILTER_RECORD_STRING);
-	am->am_bsmrecord = dlsym(am->am_dlhandle,
-	    AUDIT_FILTER_BSMRECORD_STRING);
+	am->am_rawrecord = dlsym(am->am_dlhandle,
+	    AUDIT_FILTER_RAWRECORD_STRING);
 	am->am_detach = dlsym(am->am_dlhandle, AUDIT_FILTER_DETACH_STRING);
 
 	if (am->am_attach != NULL) {
-		if (am->am_attach(&am->am_instance, am->am_argc, am->am_argv)
+		if (am->am_attach(am, am->am_argc, am->am_argv)
 		    != AUDIT_FILTER_SUCCESS) {
 			warnx("auditfilter_module_attach: %s: failed",
 			    am->am_modulename);
 			dlclose(am->am_dlhandle);
 			am->am_dlhandle = NULL;
+			am->am_cookie = NULL;
 			am->am_attach = NULL;
 			am->am_reinit = NULL;
 			am->am_record = NULL;
-			am->am_bsmrecord = NULL;
+			am->am_rawrecord = NULL;
 			am->am_detach = NULL;
 			return (-1);
 		}
@@ -184,7 +191,7 @@
 	if (am->am_reinit == NULL)
 		return (0);
 
-	if (am->am_reinit(&am->am_instance, am->am_argc, am->am_argv) !=
+	if (am->am_reinit(am, am->am_argc, am->am_argv) !=
 	    AUDIT_FILTER_SUCCESS) {
 		warnx("auditfilter_module_reinit: %s: failed",
 		    am->am_modulename);
@@ -483,3 +490,24 @@
 	auditfilter_module_list_detach(&filter_list);
 	auditfilter_module_list_free(&filter_list);
 }
+
+/*
+ * APIs to allow modules to query and set their per-instance cookie.
+ */
+void
+audit_filter_getcookie(void *instance, void **cookie)
+{
+	struct auditfilter_module *am;
+
+	am = (struct auditfilter_module *)instance;
+	*cookie = am->am_cookie;
+}
+
+void
+audit_filter_setcookie(void *instance, void *cookie)
+{
+	struct auditfilter_module *am;
+
+	am = (struct auditfilter_module *)instance;
+	am->am_cookie = cookie;
+}

==== //depot/projects/trustedbsd/base/contrib/openbsm/bsm/audit.h#4 (text) ====

@@ -30,7 +30,7 @@
  *
  * @APPLE_BSD_LICENSE_HEADER_END@
  *
- * $P4: //depot/projects/trustedbsd/openbsm/bsm/audit.h#16 $
+ * $P4: //depot/projects/trustedbsd/openbsm/bsm/audit.h#19 $
  */
 
 #ifndef _BSM_AUDIT_H
@@ -38,11 +38,12 @@
 
 #define	AUDIT_RECORD_MAGIC	0x828a0f1b
 #define	MAX_AUDIT_RECORDS	20
-#define	MAX_AUDIT_RECORD_SIZE	4096
+#define	MAXAUDITDATA		(0x8000 - 1)
+#define	MAX_AUDIT_RECORD_SIZE	MAXAUDITDATA
 #define	MIN_AUDIT_FILE_SIZE	(512 * 1024)
 
 /*
- * Triggers for the audit daemon
+ * Triggers for the audit daemon.
  */
 #define	AUDIT_TRIGGER_MIN		1
 #define	AUDIT_TRIGGER_LOW_SPACE		1
@@ -53,7 +54,8 @@
 #define	AUDIT_TRIGGER_MAX		5
 
 /*
- * File that will be read for trigger events from the kernel
+ * Special file that will be read for trigger events from the kernel
+ * (FreeBSD).
  */
 #define	AUDIT_TRIGGER_FILE	"/dev/audit"
 
@@ -101,7 +103,7 @@
 #define	AU_ALL		0xffffffff
 
 /*
- * IPC types
+ * IPC types.
  */
 #define	AT_IPC_MSG	((u_char)1)	/* Message IPC id. */
 #define	AT_IPC_SEM	((u_char)2)	/* Semaphore IPC id. */
@@ -150,16 +152,19 @@
 #define	AUDIT_AHLT	0x0002
 #define	AUDIT_ARGV	0x0004
 #define	AUDIT_ARGE	0x0008
-#define	AUDIT_PASSWD	0x0010
-#define	AUDIT_SEQ	0x0020
-#define	AUDIT_WINDATA	0x0040
-#define	AUDIT_USER	0x0080
-#define	AUDIT_GROUP	0x0100
-#define	AUDIT_TRAIL	0x0200
-#define	AUDIT_PATH	0x0400
+#define	AUDIT_SEQ	0x0010
+#define	AUDIT_WINDATA	0x0020
+#define	AUDIT_USER	0x0040
+#define	AUDIT_GROUP	0x0080
+#define	AUDIT_TRAIL	0x0100
+#define	AUDIT_PATH	0x0200
+#define	AUDIT_SCNT	0x0400
+#define	AUDIT_PUBLIC	0x0800
+#define	AUDIT_ZONENAME	0x1000
+#define	AUDIT_PERZONE	0x2000
 
 /*
- * Audit queue control parameters
+ * Audit queue control parameters.
  */
 #define	AQ_HIWATER	100
 #define	AQ_MAXHIGH	10000

==== //depot/projects/trustedbsd/base/contrib/openbsm/bsm/audit_filter.h#2 (text) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $P4: //depot/projects/trustedbsd/openbsm/bsm/audit_filter.h#2 $
+ * $P4: //depot/projects/trustedbsd/openbsm/bsm/audit_filter.h#4 $
  */
 
 #ifndef _BSM_AUDIT_FILTER_H_
@@ -38,22 +38,28 @@
  * audit_filter_reinit_t - arguments to module have changed
  * audit_filter_record_t - present parsed record to filter module, with
  *                         receipt time
- * audit_filter_bsmrecord_t - present bsm format record to filter module,
+ * audit_filter_rawrecord_t - present BSM format record to filter module,
  *                            with receipt time
  * audit_filter_destach_t - filter module is being detached
  *
  * There may be many instances of the same filter, identified by the instance
  * void pointer maintained by the filter instance.
  */
-typedef int (*audit_filter_attach_t)(void **instance, int argc, char *argv[]);
+typedef int (*audit_filter_attach_t)(void *instance, int argc, char *argv[]);
 typedef int (*audit_filter_reinit_t)(void *instance, int argc, char *argv[]);
 typedef void (*audit_filter_record_t)(void *instance, struct timespec *ts,
 	    int token_count, const tokenstr_t tok[]);
-typedef void (*audit_filter_bsmrecord_t)(void *instance, struct timespec *ts,
+typedef void (*audit_filter_rawrecord_t)(void *instance, struct timespec *ts,
 	    void *data, u_int len);
 typedef void (*audit_filter_detach_t)(void *instance);
 
 /*
+ * APIs that may be called by audit filters.
+ */
+void	audit_filter_getcookie(void *instance, void **cookie);
+void	audit_filter_setcookie(void *instance, void *cookie);
+
+/*
  * Values to be returned by audit_filter_init_t.
  */
 #define	AUDIT_FILTER_SUCCESS	(0)
@@ -66,12 +72,12 @@
 #define	AUDIT_FILTER_ATTACH	audit_filter_attach
 #define	AUDIT_FILTER_REINIT	audit_filter_reinit
 #define	AUDIT_FILTER_RECORD	audit_filter_record
-#define	AUDIT_FILTER_BSMRECORD	audit_filter_bsmrecord
+#define	AUDIT_FILTER_RAWRECORD	audit_filter_rawrecord
 #define	AUDIT_FILTER_DETACH	audit_filter_detach
 #define	AUDIT_FILTER_ATTACH_STRING	"audit_filter_attach"
 #define	AUDIT_FILTER_REINIT_STRING	"audit_filter_reinit"
 #define	AUDIT_FILTER_RECORD_STRING	"audit_filter_record"
-#define	AUDIT_FILTER_BSMRECORD_STRING	"audit_filter_bsmrecord"
+#define	AUDIT_FILTER_RAWRECORD_STRING	"audit_filter_rawrecord"
 #define	AUDIT_FILTER_DETACH_STRING	"audit_filter_detach"
 
 #endif /* !_BSM_AUDIT_FILTER_H_ */

==== //depot/projects/trustedbsd/base/contrib/openbsm/bsm/audit_internal.h#3 (text) ====

@@ -34,7 +34,7 @@
  *
  * @APPLE_BSD_LICENSE_HEADER_END@
  *
- * $P4: //depot/projects/trustedbsd/openbsm/bsm/audit_internal.h#13 $
+ * $P4: //depot/projects/trustedbsd/openbsm/bsm/audit_internal.h#14 $
  */
 
 #ifndef _AUDIT_INTERNAL_H
@@ -68,15 +68,15 @@
 typedef	struct au_record	au_record_t;
 
 
-/* We could determined the header and trailer sizes by
- * defining appropriate structures. We hold off that approach
- * till we have a consistant way of using structures for all tokens.
- * This is not straightforward since these token structures may
- * contain pointers of whose contents we dont know the size
- * (e.g text tokens)
+/*
+ * We could determined the header and trailer sizes by defining appropriate
+ * structures.  We hold off that approach until we have a consistant way of
+ * using structures for all tokens.  This is not straightforward since these
+ * token structures may contain pointers of whose contents we dont know the
+ * size (e.g text tokens).
  */
-#define	BSM_HEADER_SIZE		18
-#define	BSM_TRAILER_SIZE	7
+#define	AUDIT_HEADER_SIZE	18
+#define	AUDIT_TRAILER_SIZE	7
 
 /*
  * BSM token streams store fields in big endian byte order, so as to be

==== //depot/projects/trustedbsd/base/contrib/openbsm/bsm/audit_kevents.h#3 (text) ====

@@ -30,7 +30,7 @@
  *
  * @APPLE_BSD_LICENSE_HEADER_END@
  *
- * $P4: //depot/projects/trustedbsd/openbsm/bsm/audit_kevents.h#38 $
+ * $P4: //depot/projects/trustedbsd/openbsm/bsm/audit_kevents.h#40 $
  */
 
 #ifndef _BSM_AUDIT_KEVENTS_H_
@@ -273,134 +273,200 @@
 #define	AUE_NTP_ADJTIME		288
 
 /*
- * Events not present in OpenSolaris BSM, generally derived from Apple Darwin
- * BSM or added in OpenBSM.  This start a little too close to the top end of
- * the OpenSolaris event list for my comfort.
+ * Events added for Apple Darwin that potentially collide with future Solaris
+ * BSM events.  These are assigned AUE_DARWIN prefixes, and are deprecated in
+ * new trails.  Systems generating these events should switch to the new
+ * identifiers that avoid colliding with the Solaris identifier space.
  */
-#define	AUE_GETFSSTAT		301
-#define	AUE_PTRACE		302
-#define	AUE_CHFLAGS		303
-#define	AUE_FCHFLAGS		304
-#define	AUE_PROFILE		305
-#define	AUE_KTRACE		306
-#define	AUE_SETLOGIN		307
+#define	AUE_DARWIN_GETFSSTAT	301
+#define	AUE_DARWIN_PTRACE	302
+#define	AUE_DARWIN_CHFLAGS	303
+#define	AUE_DARWIN_FCHFLAGS	304
+#define	AUE_DARWIN_PROFILE	305
+#define	AUE_DARWIN_KTRACE	306
+#define	AUE_DARWIN_SETLOGIN	307
 #define	AUE_DARWIN_REBOOT	308	/* XXX: See AUE_REBOOT. */
-#define	AUE_REVOKE		309
-#define	AUE_UMASK		310
-#define	AUE_MPROTECT		311
+#define	AUE_DARWIN_REVOKE	309
+#define	AUE_DARWIN_UMASK	310
+#define	AUE_DARWIN_MPROTECT	311
 #define	AUE_DARWIN_SETPRIORITY	312	/* XXX: See AUE_SETPRIORITY. */
 #define	AUE_DARWIN_SETTIMEOFDAY	313	/* XXX: See AUE_SETTIMEOFDAY. */
 #define	AUE_DARWIN_FLOCK	314	/* XXX: See AUE_FLOCK. */
-#define	AUE_MKFIFO		315
-#define	AUE_POLL		316
+#define	AUE_DARWIN_MKFIFO	315
+#define	AUE_DARWIN_POLL		316
 #define	AUE_DARWIN_SOCKETPAIR	317	/* XXXRW: See AUE_SOCKETPAIR. */
-#define	AUE_FUTIMES		318
-#define	AUE_SETSID		319
-#define	AUE_SETPRIVEXEC		320	/* Darwin-specific. */
+#define	AUE_DARWIN_FUTIMES	318
+#define	AUE_DARWIN_SETSID	319
+#define	AUE_DARWIN_SETPRIVEXEC	320	/* Darwin-specific. */
 #define	AUE_DARWIN_NFSSVC	321	/* XXX: See AUE_NFS_SVC. */
 #define	AUE_DARWIN_GETFH	322	/* XXX: See AUE_NFS_GETFH. */
 #define	AUE_DARWIN_QUOTACTL	323	/* XXX: See AUE_QUOTACTL. */
-#define	AUE_ADDPROFILE		324	/* Darwin-specific. */

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the trustedbsd-cvs mailing list