Hello Steve, 

> echo 'node=RHEL5.2GA type=CONFIG_CHANGE msg=audit(1217404709.683:23182): 
> auid=0 subj=root:system_r:auditctl_t:s0-s0:c0.c1023 op=remove rule key="haha" 
> list=4 res=1'

Why the message which type is "CONFIG_CHANGE" contains "key" field? 
The "CONFIG_CHANGE" audit message should only describe the audit object status.

You can get the audit message by following steps:
1. # touch test1
2. # auditctl -w `pwd`/test1 -k haha
3. # mv test1 test2

I think we'd better not output "key" field in "CONFIG_CHANGE" message.
What's your opinion? If you agree with me, I'll make a patch for kernel. 

Peng Haitao said the following on 2008-07-29 13:41:
> Hello Steve, 
> 
> Use option '-k key-string' cannot search out the log which contains the given 
> key-string and message type is CONFIG_CHANGE.
> 
> For example:
> echo 'node=RHEL5.2GA type=CONFIG_CHANGE msg=audit(1217404709.683:23182): 
> auid=0 subj=root:system_r:auditctl_t:s0-s0:c0.c1023 op=remove rule key="haha" 
> list=4 res=1' | ausearch -k haha
> The output is: <no matches>
> 
> Signed-off-by: Peng Haitao <[EMAIL PROTECTED]>
> ---
>  src/ausearch-parse.c |   55 +++++++++++++++++++++++++++++++++++++++++++++++--
>  1 files changed, 52 insertions(+), 3 deletions(-)
> 
> diff --git a/src/ausearch-parse.c b/src/ausearch-parse.c
> index 0c38be1..fd00013 100755
> --- a/src/ausearch-parse.c
> +++ b/src/ausearch-parse.c
> @@ -1411,7 +1411,7 @@ static int parse_simple_message(const lnode *n, 
> search_items *s)
>       errno = 0;
>       s->loginuid = strtoul(ptr, NULL, 10);
>       if (errno)
> -             return 2;
> +             return 1;
>       if (term)
>               *term = ' ';
>       else
> @@ -1437,7 +1437,56 @@ static int parse_simple_message(const lnode *n, 
> search_items *s)
>                               else    // Set it back to something sane
>                                       term = str;
>                       } else
> -                             return 3;
> +                             return 2;
> +             }
> +     }
> +
> +     if (event_key) {
> +             str = strstr(term, "key=");
> +             if (str != NULL) {
> +                     if (!s->key) {
> +                             //create
> +                             s->key = malloc(sizeof(slist));
> +                             if (s->key == NULL)
> +                                     return 3;
> +                             slist_create(s->key);
> +                     }
> +                     ptr = str + 4;
> +                     if (*ptr == '"') {
> +                             ptr++;
> +                             term = strchr(ptr, '"');
> +                             if (term != NULL) {
> +                                     *term = 0;
> +                                     if (s->key) {
> +                                             // append
> +                                             snode sn;
> +                                             sn.str = strdup(ptr);
> +                                             sn.key = NULL;
> +                                             sn.hits = 1;
> +                                             slist_append(s->key, &sn);
> +                                     }
> +                                     *term = '"';
> +                             } else
> +                                     return 4;
> +                     } else {
> +                             if (s->key) {
> +                                     char *saved=NULL;
> +                                     char *keyptr = unescape(ptr);
> +                                     char *kptr = strtok_r(keyptr,
> +                                             key_sep, &saved);
> +                                     while (kptr) {
> +                                             snode sn;
> +                                             // append
> +                                             sn.str = strdup(kptr);
> +                                             sn.key = NULL;
> +                                             sn.hits = 1;
> +                                             slist_append(s->key, &sn);
> +                                             kptr = strtok_r(NULL,
> +                                                     key_sep, &saved);
> +                                     }
> +                                     free(keyptr);
> +                             }
> +                     }
>               }
>       }
>  
> @@ -1457,7 +1506,7 @@ static int parse_simple_message(const lnode *n, 
> search_items *s)
>               errno = 0;
>               s->success = strtoul(ptr, NULL, 10);
>               if (errno)
> -                     return 4;
> +                     return 5;
>               if (term)
>                       *term = ' ';
>       }

--
Linux-audit mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/linux-audit

Reply via email to