Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Nov 2005 21:22:07 GMT
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 87382 for review
Message-ID:  <200511282122.jASLM7uK022423@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=87382

Change 87382 by rwatson@rwatson_peppercorn on 2005/11/28 21:21:48

	In getauditflagsbin(), return EINVAL if the arguments are invalid
	or a class in the mask string isn't recognized.
	
	In getauditflagschar(), return EINVAL if the arguments are invalid.
	Annotate that we should also reject the character string if it
	contains an unrecognized class.

Affected files ...

.. //depot/projects/trustedbsd/openbsm/libbsm/bsm_flags.c#6 edit

Differences ...

==== //depot/projects/trustedbsd/openbsm/libbsm/bsm_flags.c#6 (text+ko) ====

@@ -28,6 +28,7 @@
 
 #include <bsm/libbsm.h>
 
+#include <errno.h>
 #include <stdio.h>
 #include <string.h>
 
@@ -45,8 +46,10 @@
 	struct au_class_ent *c;
 	char *last;
 
-	if ((auditstr == NULL) || (masks == NULL))
+	if ((auditstr == NULL) || (masks == NULL)) {
+		errno = EINVAL;
 		return (-1);
+	}
 
 	masks->am_success = 0;
 	masks->am_failure = 0;
@@ -76,8 +79,10 @@
 			else
 				ADD_TO_MASK(masks, c->ac_class, sel);
 			free_au_class_ent(c);
-		} else
+		} else {
+			errno = EINVAL;
 			return (-1);
+		}
 
 		/* Get the next class. */
 		tok = strtok_r(NULL, delim, &last);
@@ -89,6 +94,9 @@
  * Convert the au_mask_t fields into a string value.  If verbose is non-zero
  * the long flag names are used else the short (2-character)flag names are
  * used.
+ *
+ * XXXRW: If bits are specified that are not matched by any class, they are
+ * omitted rather than rejected with EINVAL.
  */
 int
 getauditflagschar(char *auditstr, au_mask_t *masks, int verbose)
@@ -97,8 +105,10 @@
 	char *strptr = auditstr;
 	u_char sel;
 
-	if ((auditstr == NULL) || (masks == NULL))
+	if ((auditstr == NULL) || (masks == NULL)) {
+		return (EINVAL);
 		return (-1);
+	}
 
 	/*
 	 * Enumerate the class entries, check if each is selected in either



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200511282122.jASLM7uK022423>