Hi Steve,

There is a bug in function dispatch_parser() and path_parser().

when we use dir = dirname (tdir), if tdir is not NULL, tdir and dir point to the same addr., so if we use free(tdir) before audit_msg(LOG_ERR, "The directory name: %s is too short - line %d", dir, line); we can not get the dir's correct value.

This patch can solve this problem.

Signed-off-by: Wang Fang <[EMAIL PROTECTED]>
---
diff -Nrup audit-1.7.4/audisp/audispd-pconfig.c 
audit-1.7.4-new/audisp/audispd-pconfig.c
--- audit-1.7.4/audisp/audispd-pconfig.c        2007-09-02 23:24:15.000000000 
+0800
+++ audit-1.7.4-new/audisp/audispd-pconfig.c    2008-06-21 18:33:14.000000000 
+0800
@@ -379,10 +379,10 @@ static int path_parser(struct nv_pair *n
        if (tdir)
                dir = dirname(tdir);
        if (dir == NULL || strlen(dir) < 4) { //  '/var' is shortest dirname
-               free(tdir);
                audit_msg(LOG_ERR,
                        "The directory name: %s is too short - line %d",
                        dir, line);
+               free(tdir);
                return 1;
        }

diff -Nrup audit-1.7.4/src/auditd-config.c audit-1.7.4-new/src/auditd-config.c
--- audit-1.7.4/src/auditd-config.c     2008-05-09 22:44:38.000000000 +0800
+++ audit-1.7.4-new/src/auditd-config.c 2008-06-21 18:39:58.000000000 +0800
@@ -592,10 +592,10 @@ static int dispatch_parser(struct nv_pai
        if (tdir)
                dir = dirname(tdir);
        if (dir == NULL || strlen(dir) < 4) { //  '/var' is shortest dirname
-               free(tdir);
                audit_msg(LOG_ERR,
                        "The directory name: %s is too short - line %d",
                        dir, line);
+               free(tdir);
                return 1;
        }

--
Best Regards,
Wang Fang



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

Reply via email to