Hello Mr. Steve,
   What's you opinion about this patch.
   I think option '-i' should can be used with option '-R file',
This is its function.
   If I'm wrong, please correct me, thanks.
------------------
Yu Zhiguo wrote:
 Hello Steve,
 CC Miloslav,
 
  Option '-i' cannot be used, because the check about option '-R'
 in main() is wrong.
  When check option '-R', we should consider whether option '-i'
 is specified.
 
  Using option '-i' with '-R' should ignore errors when reading
 rules from file rather than reporting error message
 "Error - nested rule files not supported".
 
  This is a patch to fix the bug of audit-1.7.4.
 
 Signed-off-by: Yu Zhiguo<yuzg(a)cn.fujitsu.com>
 ---
  src/auditctl.c |   45 +++++++++++++++++++++++++--------------------
  1 files changed, 25 insertions(+), 20 deletions(-)
 
 diff --git a/src/auditctl.c b/src/auditctl.c
 index 2c136ea..ac20fdc 100644
 --- a/src/auditctl.c
 +++ b/src/auditctl.c
 @@ -1089,39 +1089,44 @@ int main(int argc, char *argv[])
 
      set_aumessage_mode(MSG_STDERR, DBG_NO);
 
 -    /* Check where the rules are coming from: commandline or file */
 -    if ((argc == 3) && (strcmp(argv[1], "-R") == 0)) {
 +    if (argc == 1) {
 +        usage();
 +        return 1;
 +    }
  #ifndef DEBUG
 -        /* Make sure we are root */
 -        if (getuid() != 0) {
 -            fprintf(stderr,
 -                "You must be root to run this program.\n");
 -            return 4;
 -        }
 +    /* Make sure we are root */
 +    if (getuid()) {
 +        fprintf(stderr,
 +            "You must be root to run this program.\n");
 +        return 4;
 +    }
  #endif
 +
 +    /* Check where the rules are coming from: commandline or file */
 +    if ((argc == 3) && (!strcmp(argv[1], "-R"))) {
          if (fileopt(argv[2]))
              return 1;
          else
              return 0;
 -    } else {
 -        if (argc == 1) {
 -            usage();
 +    } else if ((argc == 4) &&
 +        ((!strcmp(argv[1], "-R") && !strcmp(argv[3], "-i"))
||
 +        (!strcmp(argv[2], "-R") && !strcmp(argv[1], "-i"))))
{
 +        ignore = 1;
 +        if (!strcmp(argv[1], "-R"))
 +            retval = fileopt(argv[2]);
 +        else retval = fileopt(argv[3]);
 +        if (retval)
              return 1;
 -        }
 -#ifndef DEBUG
 -        /* Make sure we are root */
 -        if (getuid() != 0) {
 -            fprintf(stderr,
 -                "You must be root to run this program.\n");
 -            return 4;
 -        }
 -#endif
 +        else
 +            return 0;
 +    } else {
          if (reset_vars())
              return 1;
          retval = setopt(argc, argv);
          if (retval == -3)
              return 0;
      }
 +
      return handle_request(retval);
  }
 
 
 
 -- 
 Linux-audit mailing list
 Linux-audit(a)redhat.com
 
https://www.redhat.com/mailman/listinfo/linux-audit