[PATCH, v3 4/8] audispd-zos-remote plugin - logging interface

Klaus Heinrich Kiwi klausk at linux.vnet.ibm.com
Thu Dec 13 15:49:31 UTC 2007


This patch implements a simple logging interface for the zos-remote
plugin. There's also some debugging code that's completely disabled if
'DEBUG' symbol isn't defined.
Messages are logged to the syslog (DAEMON facility) with info, warn and
err priorities.

Signed-off-by: Klaus Heinrich Kiwi <klausk at br.ibm.com>

diff -purN audit-1.6.2/audisp/plugins/zos-remote/zos-remote-log.c audit-1.6.2_zos-remote/audisp/plugins/zos-remote/zos-remote-log.c
--- audit-1.6.2/audisp/plugins/zos-remote/zos-remote-log.c	1969-12-31 21:00:00.000000000 -0300
+++ audit-1.6.2_zos-remote/audisp/plugins/zos-remote/zos-remote-log.c	2007-12-04 11:08:43.000000000 -0200
@@ -0,0 +1,109 @@
+/***************************************************************************
+ *   Copyright (C) 2007 International Business Machines  Corp.             *
+ *   All Rights Reserved.                                                  *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ *                                                                         *
+ * Authors:                                                                *
+ *   Klaus Heinrich Kiwi <klausk at br.ibm.com>                               *
+ ***************************************************************************/
+#include "zos-remote-log.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "auparse.h"
+
+
+static void vlog_prio(int prio, const char *fmt, va_list ap)
+{
+        char *str;
+
+        if (asprintf(&str, "pid=%d: %s", mypid, fmt) != -1) {
+                vsyslog(LOG_DAEMON | prio, str, ap);
+                free(str);
+        }
+}
+
+void log_err(const char *fmt, ...)
+{
+        va_list ap;
+
+        va_start(ap, fmt);
+        vlog_prio(LOG_ERR, fmt, ap);
+        va_end(ap);
+}
+
+void log_warn(const char *fmt, ...)
+{
+        va_list ap;
+
+        va_start(ap, fmt);
+        vlog_prio(LOG_WARNING, fmt, ap);
+        va_end(ap);
+}
+
+void log_info(const char *fmt, ...)
+{
+        va_list ap;
+
+        va_start(ap, fmt);
+        vlog_prio(LOG_INFO, fmt, ap);
+        va_end(ap);
+}
+
+void _log_debug(const char *fmt, ...)
+{
+        va_list ap;
+
+        va_start(ap, fmt);
+        vlog_prio(LOG_INFO, fmt, ap);
+        va_end(ap);
+}
+
+void _debug_ber(BerElement * ber)
+{
+        struct berval bv;
+
+        if (ber_flatten2(ber, &bv, 0) != -1) {
+                debug_bv(&bv);
+        }
+}
+
+void _debug_bv(struct berval *bv)
+{
+        char *out;
+        char octet[4];
+        ber_len_t i;
+
+        log_debug("---BER value HEX dump (size %u bytes)",
+                  (unsigned int) bv->bv_len);
+                  
+        if (bv->bv_len > 0) {
+                out = (char *) calloc((3 * (bv->bv_len)) + 1, sizeof(char));
+                if (!out) return;
+
+                for (i = 1; i <= bv->bv_len; i++) {
+                        snprintf(octet, 4, "%02x ",
+                                 (unsigned char) bv->bv_val[i - 1]);
+                        strcat(out, octet);
+                }
+                log_debug(out);
+                free(out);
+        }
+}
+
+
diff -purN audit-1.6.2/audisp/plugins/zos-remote/zos-remote-log.h audit-1.6.2_zos-remote/audisp/plugins/zos-remote/zos-remote-log.h
--- audit-1.6.2/audisp/plugins/zos-remote/zos-remote-log.h	1969-12-31 21:00:00.000000000 -0300
+++ audit-1.6.2_zos-remote/audisp/plugins/zos-remote/zos-remote-log.h	2007-12-04 11:45:55.000000000 -0200
@@ -0,0 +1,58 @@
+/***************************************************************************
+ *   Copyright (C) 2007 International Business Machines  Corp.             *
+ *   All Rights Reserved.                                                  *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ *                                                                         *
+ * Authors:                                                                *
+ *   Klaus Heinrich Kiwi <klausk at br.ibm.com>                               *
+ ***************************************************************************/
+
+#ifndef _ZOS_REMOTE_LOG_H
+#define _ZOS_REMOTE_LOG_H
+
+#include "zos-remote-ldap.h"
+
+#include <syslog.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <lber.h>
+
+extern pid_t mypid;
+
+void log_err(const char *, ...);
+void log_warn(const char *, ...);
+void log_info(const char *, ...);
+void _log_debug(const char *, ...);
+void _debug_bv(struct berval *);
+void _debug_ber(BerElement *);
+
+#ifdef DEBUG
+
+#define log_debug(fmt, ...)        _log_debug(fmt, ## __VA_ARGS__)
+#define debug_bv(bv)               _debug_bv(bv)
+#define debug_ber(ber)             _debug_ber(ber)
+
+#else
+
+#define log_debug(fmt, ...)
+#define debug_bv(bv)
+#define debug_ber(ber)
+
+#endif                 /* DEBUG */
+
+
+#endif                          /* _ZOS_REMOTE_LOG_H */

-- 
Klaus Heinrich Kiwi <klausk at linux.vnet.ibm.com>
IBM STG, Linux Technology Center




More information about the Linux-audit mailing list