Implement audit_user
authorDavid Bartley <dtbartle@maltodextrin.csclub.uwaterloo.ca>
Thu, 18 Sep 2008 00:33:18 +0000 (00:33 +0000)
committerDavid Bartley <dtbartle@maltodextrin.csclub.uwaterloo.ca>
Thu, 18 Sep 2008 00:33:18 +0000 (00:33 +0000)
nss/databases.def
nss/nsswitch.c
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/Makefile
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/Versions
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/_getauuserent.c [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/_getauusernam.c [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/auditP.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/audit_user-lookup.c [new file with mode: 0644]

index 782c8b4..a440a59 100644 (file)
@@ -23,6 +23,7 @@
 
 DEFINE_DATABASE (aliases)
 #ifdef __OpenSolaris_kernel__
+DEFINE_DATABASE (audit_user)
 DEFINE_DATABASE (auth_attr)
 #endif
 DEFINE_DATABASE (ethers)
index 46965fd..374f475 100644 (file)
@@ -60,7 +60,7 @@ static service_library *nss_new_service (name_database *database,
 /* Structure to map database name to variable.  */
 static const struct
 {
-  const char name[10];
+  const char name[12];
   service_user **dbp;
 } databases[] =
 {
index 7ebc6cf..1bd6451 100644 (file)
@@ -33,7 +33,8 @@ sysdep_routines +=  gethrtime mount umount umount2 systeminfo resolvepath \
     _so_send _so_sendmsg _so_sendto _so_setsockopt _so_shutdown _so_socket \
     _so_socketpair _sysconfig rctl atomic door getexecname is_system_labeled \
     privP mnttab modctl acl facl lltostr ulltostr defopen defread defcntl \
-    _getauthnam _getauthattr _getprofnam _getprofattr _getusernam _getuserattr
+    _getauthnam _getauthattr _getprofnam _getprofattr _getusernam _getuserattr \
+    _getauuserent _getauusernam
 sysdep_routines += sys_fdsync sys_brk sys_fcntl sys_utssys sys_lwp_private \
     sys_uname sys_getloadavg sys_utimes sys_getpeerucred sys_ucred_get \
     sys_privsys sys_putmsg sys_putpmsg sys_meminfo sys_pset_getloadavg \
@@ -51,7 +52,7 @@ sysdep_headers += sys/feature_tests.h sys/mount.h sys/cred.h sys/ulimit.h \
     sys/link.h sys/rctl_impl.h sys/procfs_isa.h sys/frame.h sys/kbio.h \
     sys/port.h sys/machelf.h sys/zmod.h sys/inttypes.h sys/atomic.h \
     sys/ucred.h sys/port_impl.h sys/ttold.h sys/machtypes.h sys/dirent.h \
-    sys/utime.h sys/vfstab sys/procfs.h
+    sys/utime.h sys/vfstab sys/procfs.h sys/old_procfs.h
 sysdep_headers += ucred.h priv.h bits/regset.h door.h zone.h deflt.h \
     rtld_db.h pcsample.h port.h atomic.h bits/machtypes.h
 headers := $(filter-out sys/sysinfo.h,$(headers))
@@ -110,7 +111,7 @@ libnsl-routines += nsl_misc
 endif
 
 ifeq ($(subdir),nss)
-databases += auth_attr prof_attr user_attr
+databases += audit_user auth_attr prof_attr user_attr
 endif
 
 ifeq ($(subdir),nptl)
index 8c94b04..44739b8 100644 (file)
@@ -22,18 +22,18 @@ libc {
     door_server_create; door_setparam; door_ucred; door_unbind;
 
     # e
-    _endauthattr; _endprofattr; _enduserattr;
+    _endauuser; _endauthattr; _endprofattr; _enduserattr;
 
     # f
     facl; fork1;
 
     # g
-    getacct; _getauthattr; _getauthnam; getcpuid; getexecname; gethrtime;
-    gethrvtime; getextmntent; getmntany; getmntent; getpagesizes;
-    getpagesizes2; getpeerucred; getpflags; getppriv; getprivimplinfo;
-    _getprofattr; _getprofnam; getprojid; getrctl; gettaskid; _getuserattr;
-    _getusernam; getustack; getvmusage; getzoneid; getzoneidbyname;
-    getzonenamebyid;
+    getacct; _getauuserent; _getauuserent; _getauthattr; _getauthnam; getcpuid;
+    getexecname; gethrtime; gethrvtime; getextmntent; getmntany; getmntent;
+    getpagesizes; getpagesizes2; getpeerucred; getpflags; getppriv;
+    getprivimplinfo; _getprofattr; _getprofnam; getprojid; getrctl; gettaskid;
+    _getuserattr; _getusernam; getustack; getvmusage; getzoneid;
+    getzoneidbyname; getzonenamebyid;
 
     # h
     hasmntopt;
@@ -74,23 +74,24 @@ libc {
     resolvepath;
 
     # s
-    sendfilev; sendfilev64; _setauthattr; setpflags; setppriv; _setprofattr;
-    setprojrctl; setrctl; settaskid; _setuserattr; setustack; sig2str;
-    _so_accept; _so_bind; _so_connect; _so_getpeername; _so_getsockname;
-    _so_getsockopt; _so_listen; _so_recv; _so_recvfrom; _so_recvmsg; _so_send;
-    _so_sendmsg; _so_sendto; _so_setsockopt; _so_shutdown; _so_socket;
-    _so_socketpair; str2sig; strlcat; strlcpy; swapctl; __systemcall; sysfs;
-    systeminfo;
+    sendfilev; sendfilev64; _setauuser; _setauthattr; setpflags; setppriv;
+    _setprofattr; setprojrctl; setrctl; settaskid; _setuserattr; setustack;
+    sig2str; _so_accept; _so_bind; _so_connect; _so_getpeername;
+    _so_getsockname; _so_getsockopt; _so_listen; _so_recv; _so_recvfrom;
+    _so_recvmsg; _so_send; _so_sendmsg; _so_sendto; _so_setsockopt;
+    _so_shutdown; _so_socket; _so_socketpair; str2sig; strlcat; strlcpy;
+    swapctl; __systemcall; sysfs; systeminfo;
 
     # t
     _ttyname_dev;
 
     # u
-    uadmin; _ucred_alloc; ucred_free; ucred_get; ucred_getegid; ucred_geteuid;
-    ucred_getgroups; ucred_getlabel; ucred_getpflags; ucred_getpid;
-    ucred_getprivset; ucred_getprojid; ucred_getrgid; ucred_getruid;
-    ucred_getsgid; ucred_getsuid; ucred_getzoneid; ucred_size; ulltostr;
-    umount; umount2; utssys;
+    uadmin; _ucred_alloc; ucred_free; ucred_get; ucred_getamask; ucred_getauid;
+    ucred_getasid; ucred_getatid; ucred_getegid; ucred_geteuid; ucred_getgroups;
+    ucred_getlabel; ucred_getpflags; ucred_getpid; ucred_getprivset;
+    ucred_getprojid; ucred_getrgid; ucred_getruid; ucred_getsgid;
+    ucred_getsuid; ucred_getzoneid; ucred_size; ulltostr; umount; umount2;
+    utssys;
 
     # w
     wracct;
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/_getauuserent.c b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/_getauuserent.c
new file mode 100644 (file)
index 0000000..d12d092
--- /dev/null
@@ -0,0 +1,39 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <auditP.h>
+
+#define LOOKUP_TYPE    au_user_str_t
+#define SETFUNC_NAME   _setauuser
+#define        GETFUNC_NAME    _getauuserent
+#define        ENDFUNC_NAME    _endauuser
+#define DATABASE_NAME  audit_user
+#define BUFLEN         NSS_BUFLEN_AUDITUSER
+
+#include "../nss/getXXent_r.c"
+
+au_user_str_t * _getauuserent (au_user_str_t *psbuf, char *buf, int buflen, int *errnop)
+{
+  au_user_str_t *psbufp;
+  int errval = _getauuserent_r (psbuf, buf, buflen, &psbufp);
+  if (errval && errnop)
+    *errnop = errval;
+
+  return errval ? NULL : psbuf;
+}
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/_getauusernam.c b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/_getauusernam.c
new file mode 100644 (file)
index 0000000..8e6e403
--- /dev/null
@@ -0,0 +1,40 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <auditP.h>
+
+#define LOOKUP_TYPE    au_user_str_t
+#define FUNCTION_NAME  _getauusernam
+#define DATABASE_NAME  audit_user
+#define ADD_PARAMS     const char *name
+#define ADD_VARIABLES  name
+#define BUFLEN         NSS_BUFLEN_AUDITUSER
+
+#include <nss/getXXbyYY_r.c>
+
+au_user_str_t * _getauusernam (const char *name, au_user_str_t *psbuf, char *buf,
+      int buflen, int *errnop)
+{
+  au_user_str_t *psbufp;
+  int errval = _getauusernam_r (name, psbuf, buf, buflen, &psbufp);
+  if (errval && errnop)
+    *errnop = errval;
+
+  return errval ? NULL : psbuf;
+}
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/auditP.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/auditP.h
new file mode 100644 (file)
index 0000000..053932b
--- /dev/null
@@ -0,0 +1,64 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _AUDITP_H
+#define _AUDITP_H
+
+#include <sys/types.h>
+
+typedef uid_t au_id_t;
+typedef pid_t au_asid_t;
+
+typedef struct au_port_s
+  {
+       uint32_t at_major;
+       uint32_t at_minor;
+  } au_port_t;
+
+typedef struct au_tid_addr64
+  {
+    au_port_t at_port;
+       unsigned int at_type;
+       unsigned int at_addr[4];
+  } au_tid64_addr_t;
+
+typedef struct au_mask
+  {
+       unsigned int am_success;
+       unsigned int am_failure;
+  } au_mask_t;
+
+typedef struct auditinfo_addr64
+  {
+    au_id_t     ai_auid;
+    au_mask_t   ai_mask;
+    au_tid64_addr_t ai_termid;
+    au_asid_t   ai_asid;
+  } auditinfo64_addr_t;
+
+typedef struct au_user_str_s
+  {
+       char *au_name;
+       char *au_always;
+       char *au_never;
+  } au_user_str_t;
+
+#define AU_NOAUDITID   ((au_id_t)-2)
+
+#endif /* _AUDITP_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/audit_user-lookup.c b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/audit_user-lookup.c
new file mode 100644 (file)
index 0000000..3e3a05a
--- /dev/null
@@ -0,0 +1,23 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#define DATABASE_NAME audit_user
+#define DEFAULT_CONFIG "files nis"
+
+#include "XXX-lookup.c"