|
|
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 |
}
|