changeset 11934:fdae577692c4

6890083 fcntl(2) should generate an additional argument token when F_SETFL is used
author Marek Pospisil <Marek.Pospisil@Sun.COM>
date Tue, 16 Mar 2010 06:44:44 -0700
parents 76670fc4178f
children 538c866aaac6
files usr/src/cmd/auditrecord/audit_record_attr.txt usr/src/uts/common/c2/audit_event.c
diffstat 2 files changed, 13 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/cmd/auditrecord/audit_record_attr.txt	Tue Mar 16 07:13:46 2010 -0600
+++ b/usr/src/cmd/auditrecord/audit_record_attr.txt	Tue Mar 16 06:44:44 2010 -0700
@@ -814,12 +814,15 @@
 
 label=AUE_FCNTL
   case=With a valid file descriptor
-    format=arg1:path:attr
-      comment=2, command, "cmd"
+    format=arg1:[arg]2:path:attr
+      comment=2, command, "cmd":
+      comment=3, flags, "flags"
   case=With an invalid file descriptor
-    format=arg1:arg2
+    format=arg1:[arg]2:arg3
       comment=2, command, "cmd":
+      comment=3, flags, "flags":
       comment=1, file descriptor, "no path fd"
+  note=Flags are included only when cmd is F_SETFL.
 
 label=AUE_FLOCK
   skip=Not used.
--- a/usr/src/uts/common/c2/audit_event.c	Tue Mar 16 07:13:46 2010 -0600
+++ b/usr/src/uts/common/c2/audit_event.c	Tue Mar 16 06:44:44 2010 -0700
@@ -1383,7 +1383,7 @@
 aus_fcntl(struct t_audit_data *tad)
 {
 	klwp_t *clwp = ttolwp(curthread);
-	uint32_t cmd, fd;
+	uint32_t cmd, fd, flags;
 	struct file  *fp;
 	struct vnode *vp;
 	struct f_audit_data *fad;
@@ -1394,11 +1394,15 @@
 		long	arg;
 	} *uap = (struct a *)clwp->lwp_ap;
 
-	cmd = (uint32_t)uap->cmd;
-	fd  = (uint32_t)uap->fd;
+	cmd	= (uint32_t)uap->cmd;
+	fd	= (uint32_t)uap->fd;
+	flags	= (uint32_t)uap->arg;
 
 	au_uwrite(au_to_arg32(2, "cmd", cmd));
 
+	if (cmd == F_SETFL)
+		au_uwrite(au_to_arg32(3, "flags", flags));
+
 		/*
 		 * convert file pointer to file descriptor
 		 *   Note: fd ref count incremented here.