Blame SOURCES/audit-2.3.3-login.patch

ade036
diff -urp audit-2.3.3.orig/src/ausearch-parse.c audit-2.3.3/src/ausearch-parse.c
ade036
--- audit-2.3.3.orig/src/ausearch-parse.c	2014-03-18 12:18:17.376764161 -0400
ade036
+++ audit-2.3.3/src/ausearch-parse.c	2014-03-18 12:21:10.924749548 -0400
ade036
@@ -1106,14 +1106,41 @@ static int parse_login(const lnode *n, s
ade036
 	s->uid = strtoul(ptr, NULL, 10);
ade036
 	if (errno)
ade036
 		return 6;
ade036
-	// get loginuid
ade036
 	*term = ' ';
ade036
+	// optionally get subj
ade036
+	if (event_subject) {
ade036
+		str = strstr(term, "subj=");
ade036
+		if (str) {
ade036
+			ptr = str + 5;
ade036
+			term = strchr(ptr, ' ');
ade036
+			if (term == NULL)
ade036
+				return 12;
ade036
+			*term = 0;
ade036
+			if (audit_avc_init(s) == 0) {
ade036
+				anode an;
ade036
+
ade036
+				anode_init(&an);
ade036
+				an.scontext = strdup(str);
ade036
+				alist_append(s->avc, &an);
ade036
+				*term = ' ';
ade036
+			} else
ade036
+				return 13;
ade036
+			*term = ' ';
ade036
+		}
ade036
+	}
ade036
+	// get loginuid
ade036
 	str = strstr(term, "new auid=");
ade036
 	if (str == NULL) {
ade036
-		str = strstr(term, "new loginuid=");
ade036
-		if (str == NULL)
ade036
-			return 7;
ade036
-		ptr = str + 13;
ade036
+		// 3.14 kernel changed it to the next line
ade036
+		str = strstr(term, " auid=");
ade036
+		if (str == NULL) {
ade036
+			str = strstr(term, "new loginuid=");
ade036
+			if (str == NULL)
ade036
+				return 7;
ade036
+			ptr = str + 13;
ade036
+		}
ade036
+		else
ade036
+			ptr = str + 6;
ade036
 	} else
ade036
 		ptr = str + 9;
ade036
 	term = strchr(ptr, ' ');
ade036
@@ -1148,18 +1175,24 @@ static int parse_login(const lnode *n, s
ade036
 		if (term == NULL)
ade036
 			term = n->message;
ade036
 		str = strstr(term, "new ses=");
ade036
-		if (str) {
ade036
-			ptr = str + 8;
ade036
-			term = strchr(ptr, ' ');
ade036
-			if (term)
ade036
-				*term = 0;
ade036
-			errno = 0;
ade036
-			s->session_id = strtoul(ptr, NULL, 10);
ade036
-			if (errno)
ade036
-				return 11;
ade036
-			if (term)
ade036
-				*term = ' ';
ade036
+		if (str == NULL) {
ade036
+			// The 3.14 kernel changed it to the next line
ade036
+			str = strstr(term, " ses=");
ade036
+			if (str == NULL)
ade036
+				return 14;
ade036
+			ptr = str + 5;
ade036
 		}
ade036
+		else
ade036
+			ptr = str + 8;
ade036
+		term = strchr(ptr, ' ');
ade036
+		if (term)
ade036
+			*term = 0;
ade036
+		errno = 0;
ade036
+		s->session_id = strtoul(ptr, NULL, 10);
ade036
+		if (errno)
ade036
+			return 11;
ade036
+		if (term)
ade036
+			*term = ' ';
ade036
 	}
ade036
 	return 0;
ade036
 }