|
From: <sv...@va...> - 2016-02-17 18:11:41
|
Author: iraisr
Date: Wed Feb 17 18:11:32 2016
New Revision: 15791
Log:
Solaris syscall: commands A_GETSTAT and A_SETSTAT
for auditon(2) subcode of the auditsys() syscall
were removed in Solaris 12.
However they stay for Solaris 11 and illumos.
n-i-bz
Added:
trunk/memcheck/tests/solaris/scalar_auditon_stat.c
trunk/memcheck/tests/solaris/scalar_auditon_stat.stderr.exp
trunk/memcheck/tests/solaris/scalar_auditon_stat.stdout.exp
trunk/memcheck/tests/solaris/scalar_auditon_stat.vgtest
Modified:
trunk/configure.ac
trunk/coregrind/m_syswrap/syswrap-solaris.c
trunk/include/vki/vki-solaris.h
trunk/memcheck/tests/solaris/ (props changed)
trunk/memcheck/tests/solaris/Makefile.am
trunk/memcheck/tests/solaris/scalar.c
trunk/memcheck/tests/solaris/scalar.stderr.exp
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Wed Feb 17 18:11:32 2016
@@ -3039,6 +3039,31 @@
AM_CONDITIONAL(SOLARIS_ZONE_DEFUNCT, test x$solaris_zone_defunct = xyes)
+# Solaris-specific check determining if commands A_GETSTAT and A_SETSTAT
+# for auditon(2) subcode of the auditsys() syscall are available.
+# These commands are available in Solaris 11 and illumos but were removed
+# in Solaris 12.
+#
+# C-level symbol: SOLARIS_AUDITON_STAT
+# Automake-level symbol: SOLARIS_AUDITON_STAT
+#
+AC_MSG_CHECKING([for A_GETSTAT and A_SETSTAT auditon(2) commands (Solaris-specific)])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <bsm/audit.h>
+]], [[
+ return !(A_GETSTAT && A_SETSTAT);
+]])], [
+solaris_auditon_stat=yes
+AC_MSG_RESULT([yes])
+AC_DEFINE([SOLARIS_AUDITON_STAT], 1,
+ [Define to 1 if you have the `A_GETSTAT' and `A_SETSTAT' constants.])
+], [
+solaris_auditon_stat=no
+AC_MSG_RESULT([no])
+])
+AM_CONDITIONAL(SOLARIS_AUDITON_STAT, test x$solaris_auditon_stat = xyes)
+
+
# Solaris-specific check determining if the new shmsys() syscall subcodes
# IPC_XSTAT64, SHMADV, SHM_ADV_GET, SHM_ADV_SET and SHMGET_OSM are available.
# These subcodes were added in Solaris 11 but are missing on illumos.
@@ -3515,6 +3540,7 @@
AM_CONDITIONAL(SOLARIS_LWP_NAME_SYSCALL, false)
AM_CONDITIONAL(SOLARIS_GETRANDOM_SYSCALL, false)
AM_CONDITIONAL(SOLARIS_ZONE_DEFUNCT, false)
+AM_CONDITIONAL(SOLARIS_AUDITON_STAT, false)
AM_CONDITIONAL(SOLARIS_SHM_NEW, false)
AM_CONDITIONAL(SOLARIS_PRXREGSET_T, false)
AM_CONDITIONAL(SOLARIS_FREALPATHAT_SYSCALL, false)
Modified: trunk/coregrind/m_syswrap/syswrap-solaris.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-solaris.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-solaris.c Wed Feb 17 18:11:32 2016
@@ -7663,6 +7663,7 @@
long, code, int, cmd, char *, data, int, length);
PRE_MEM_WRITE("auditsys(data)", ARG3, ARG4);
break;
+#if defined(SOLARIS_AUDITON_STAT)
case VKI_A_GETSTAT:
PRE_REG_READ3(long, SC3("auditsys", "auditctl", "getstat"),
long, code, int, cmd, vki_au_stat_t *, stats);
@@ -7673,6 +7674,7 @@
long, code, int, cmd, vki_au_stat_t *, stats);
PRE_MEM_READ("auditsys(stats)", ARG3, sizeof(vki_au_stat_t));
break;
+#endif /* SOLARIS_AUDITON_STAT */
case VKI_A_SETUMASK:
PRE_REG_READ3(long, SC3("auditsys", "auditctl", "setumask"),
long, code, int, cmd, vki_auditinfo_t *, umask);
@@ -7853,10 +7855,12 @@
case VKI_A_GETCAR:
POST_MEM_WRITE(ARG3, VG_(strlen)((HChar *) ARG3) + 1);
break;
+#if defined(SOLARIS_AUDITON_STAT)
case VKI_A_GETSTAT:
POST_MEM_WRITE(ARG3, sizeof(vki_au_stat_t));
break;
case VKI_A_SETSTAT:
+#endif /* SOLARIS_AUDITON_STAT */
case VKI_A_SETUMASK:
case VKI_A_SETSMASK:
break;
Modified: trunk/include/vki/vki-solaris.h
==============================================================================
--- trunk/include/vki/vki-solaris.h (original)
+++ trunk/include/vki/vki-solaris.h Wed Feb 17 18:11:32 2016
@@ -28,7 +28,7 @@
The GNU General Public License is contained in the file COPYING.
*/
-/* Copyright 2013-2015, Ivo Raisr <iv...@iv...> */
+/* Copyright 2013-2016, Ivo Raisr <iv...@iv...> */
/* Copyright 2013, OmniTI Computer Consulting, Inc. All rights reserved. */
@@ -133,7 +133,10 @@
#define VKI_A_GETPINFO_ADDR A_GETPINFO_ADDR
#define VKI_A_GETPOLICY A_GETPOLICY
#define VKI_A_GETQCTRL A_GETQCTRL
+#if defined(SOLARIS_AUDITON_STAT)
#define VKI_A_GETSTAT A_GETSTAT
+#define VKI_A_SETSTAT A_SETSTAT
+#endif /* SOLARIS_AUDITON_STAT */
#define VKI_A_SETAMASK A_SETAMASK
#define VKI_A_SETCLASS A_SETCLASS
#define VKI_A_SETCOND A_SETCOND
@@ -143,7 +146,6 @@
#define VKI_A_SETPOLICY A_SETPOLICY
#define VKI_A_SETQCTRL A_SETQCTRL
#define VKI_A_SETSMASK A_SETSMASK
-#define VKI_A_SETSTAT A_SETSTAT
#define VKI_A_SETUMASK A_SETUMASK
#define VKI_BSM_AUDIT BSM_AUDIT
#define VKI_BSM_AUDITCTL BSM_AUDITCTL
@@ -158,11 +160,13 @@
#define vki_au_id_t au_id_t
#define vki_au_mask_t au_mask_t
#define vki_au_qctrl au_qctrl
-#define vki_au_stat_t au_stat_t
#define vki_auditinfo_t auditinfo_t
#define vki_auditinfo_addr_t auditinfo_addr_t
#define vki_auditpinfo auditpinfo
#define vki_auditpinfo_addr auditpinfo_addr
+#if defined(SOLARIS_AUDITON_STAT)
+#define vki_au_stat_t au_stat_t
+#endif /* SOLARIS_AUDITON_STAT */
#include <sys/psw.h>
Modified: trunk/memcheck/tests/solaris/Makefile.am
==============================================================================
--- trunk/memcheck/tests/solaris/Makefile.am (original)
+++ trunk/memcheck/tests/solaris/Makefile.am Wed Feb 17 18:11:32 2016
@@ -29,6 +29,7 @@
name_service_door.stdout.exp name_service_door.vgtest \
pkcs11.stderr.exp-illumos pkcs11.stderr.exp-solaris pkcs11.stdout.exp pkcs11.vgtest \
scalar.stderr.exp scalar.stdout.exp scalar.vgtest \
+ scalar_auditon_stat.stderr.exp scalar_auditon_stat.stdout.exp scalar_auditon_stat.vgtest \
scalar_frealpathat.stderr.exp scalar_frealpathat.stdout.exp scalar_frealpathat.vgtest \
scalar_getrandom.stderr.exp scalar_getrandom.stdout.exp scalar_getrandom.vgtest \
scalar_ioctl.stderr.exp scalar_ioctl.stdout.exp scalar_ioctl.vgtest \
@@ -95,6 +96,10 @@
check_PROGRAMS += scalar_obsolete
endif
+if SOLARIS_AUDITON_STAT
+check_PROGRAMS += scalar_auditon_stat
+endif
+
if SOLARIS_FREALPATHAT_SYSCALL
check_PROGRAMS += scalar_frealpathat
endif
@@ -146,7 +151,7 @@
check_PROGRAMS += scalar_uuidsys
endif
-if SOLARIS_ZONE_DEFUNCT
+if SOLARIS_ZONE_DEFUNCT
check_PROGRAMS += scalar_zone_defunct
endif
Modified: trunk/memcheck/tests/solaris/scalar.c
==============================================================================
--- trunk/memcheck/tests/solaris/scalar.c (original)
+++ trunk/memcheck/tests/solaris/scalar.c Wed Feb 17 18:11:32 2016
@@ -950,61 +950,47 @@
__attribute__((noinline))
static void sys_auditsys14(void)
{
- GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETSTAT) 3s 1m");
- SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETSTAT, x0); FAIL;
-}
-
-__attribute__((noinline))
-static void sys_auditsys15(void)
-{
- GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETSTAT) 3s 1m");
- SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETSTAT, x0); FAIL;
-}
-
-__attribute__((noinline))
-static void sys_auditsys16(void)
-{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETUMASK) 3s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETUMASK, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys17(void)
+static void sys_auditsys15(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETSMASK) 3s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETSMASK, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys18(void)
+static void sys_auditsys16(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETCOND) 3s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETCOND, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys19(void)
+static void sys_auditsys17(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETCOND) 3s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETCOND, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys20(void)
+static void sys_auditsys18(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETCLASS) 3s 0m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETCLASS, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys21(void)
+static void sys_auditsys19(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETCLASS) 3s 0m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETCLASS, x0 + 1); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys22(void)
+static void sys_auditsys20(void)
{
au_evclass_map_t classmap;
classmap.ec_number = x0;
@@ -1015,21 +1001,21 @@
}
__attribute__((noinline))
-static void sys_auditsys23(void)
+static void sys_auditsys21(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETPINFO) 3s 0m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETPINFO, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys24(void)
+static void sys_auditsys22(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETPMASK) 3s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETPMASK, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys25(void)
+static void sys_auditsys23(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETPINFO_ADDR) 4s 0m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETPINFO_ADDR, x0,
@@ -1037,49 +1023,49 @@
}
__attribute__((noinline))
-static void sys_auditsys26(void)
+static void sys_auditsys24(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETKAUDIT) 4s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETKAUDIT, x0, x0 + 1); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys27(void)
+static void sys_auditsys25(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETKAUDIT) 4s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETKAUDIT, x0, x0 + 1); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys28(void)
+static void sys_auditsys26(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETAMASK) 3s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETAMASK, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys29(void)
+static void sys_auditsys27(void)
{
GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETAMASK) 3s 1m");
SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETAMASK, x0); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys30(void)
+static void sys_auditsys28(void)
{
GO(SYS_auditsys, "(BSM_GETAUDIT_ADDR) 3s 1m");
SY(SYS_auditsys, x0 + BSM_GETAUDIT_ADDR, x0 + 1, x0 + 1); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys31(void)
+static void sys_auditsys29(void)
{
GO(SYS_auditsys, "(BSM_SETAUDIT_ADDR) 3s 1m");
SY(SYS_auditsys, x0 + BSM_SETAUDIT_ADDR, x0, x0 + 1); FAIL;
}
__attribute__((noinline))
-static void sys_auditsys32(void)
+static void sys_auditsys30(void)
{
GO(SYS_auditsys, "(BSM_AUDITDOOR) 2s 0m");
SY(SYS_auditsys, x0 + BSM_AUDITDOOR, x0); FAIL;
@@ -2215,8 +2201,6 @@
sys_auditsys28();
sys_auditsys29();
sys_auditsys30();
- sys_auditsys31();
- sys_auditsys32();
/* SYS_processor_bind 187 */
/* XXX Missing wrapper. */
Modified: trunk/memcheck/tests/solaris/scalar.stderr.exp
==============================================================================
--- trunk/memcheck/tests/solaris/scalar.stderr.exp (original)
+++ trunk/memcheck/tests/solaris/scalar.stderr.exp Wed Feb 17 18:11:32 2016
@@ -3467,38 +3467,6 @@
Address 0x........ is not stack'd, malloc'd or (recently) free'd
---------------------------------------------------------
-186: SYS_auditsys (BSM_AUDITCTL,A_GETSTAT) 3s 1m
----------------------------------------------------------
-Syscall param auditsys_auditctl_getstat(code) contains uninitialised byte(s)
- ...
-
-Syscall param auditsys_auditctl_getstat(cmd) contains uninitialised byte(s)
- ...
-
-Syscall param auditsys_auditctl_getstat(stats) contains uninitialised byte(s)
- ...
-
-Syscall param auditsys(stats) points to unaddressable byte(s)
- ...
- Address 0x........ is not stack'd, malloc'd or (recently) free'd
-
----------------------------------------------------------
-186: SYS_auditsys (BSM_AUDITCTL,A_SETSTAT) 3s 1m
----------------------------------------------------------
-Syscall param auditsys_auditctl_setstat(code) contains uninitialised byte(s)
- ...
-
-Syscall param auditsys_auditctl_setstat(cmd) contains uninitialised byte(s)
- ...
-
-Syscall param auditsys_auditctl_setstat(stats) contains uninitialised byte(s)
- ...
-
-Syscall param auditsys(stats) points to unaddressable byte(s)
- ...
- Address 0x........ is not stack'd, malloc'd or (recently) free'd
-
----------------------------------------------------------
186: SYS_auditsys (BSM_AUDITCTL,A_SETUMASK) 3s 1m
---------------------------------------------------------
Syscall param auditsys_auditctl_setumask(code) contains uninitialised byte(s)
Added: trunk/memcheck/tests/solaris/scalar_auditon_stat.c
==============================================================================
--- trunk/memcheck/tests/solaris/scalar_auditon_stat.c (added)
+++ trunk/memcheck/tests/solaris/scalar_auditon_stat.c Wed Feb 17 18:11:32 2016
@@ -0,0 +1,35 @@
+/* Scalar test for commands A_GETSTAT and A_SETSTAT for auditon(2) subcode
+ of the auditsys() syscall. Available on Solaris 11 and illumos,
+ removed in Solaris 12. */
+
+#include "scalar.h"
+
+#include <bsm/audit.h>
+
+__attribute__((noinline))
+static void sys_auditsys(void)
+{
+ GO(SYS_auditsys, "(BSM_AUDITCTL,A_GETSTAT) 3s 1m");
+ SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_GETSTAT, x0); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_auditsys2(void)
+{
+ GO(SYS_auditsys, "(BSM_AUDITCTL,A_SETSTAT) 3s 1m");
+ SY(SYS_auditsys, x0 + BSM_AUDITCTL, x0 + A_SETSTAT, x0); FAIL;
+}
+
+int main(void)
+{
+ /* Uninitialised, but we know px[0] is 0x0. */
+ long *px = malloc(sizeof(long));
+ x0 = px[0];
+
+ /* SYS_auditsys 186 */
+ sys_auditsys();
+ sys_auditsys2();
+
+ return 0;
+}
+
Added: trunk/memcheck/tests/solaris/scalar_auditon_stat.stderr.exp
==============================================================================
--- trunk/memcheck/tests/solaris/scalar_auditon_stat.stderr.exp (added)
+++ trunk/memcheck/tests/solaris/scalar_auditon_stat.stderr.exp Wed Feb 17 18:11:32 2016
@@ -0,0 +1,32 @@
+---------------------------------------------------------
+186: SYS_auditsys (BSM_AUDITCTL,A_GETSTAT) 3s 1m
+---------------------------------------------------------
+Syscall param auditsys_auditctl_getstat(code) contains uninitialised byte(s)
+ ...
+
+Syscall param auditsys_auditctl_getstat(cmd) contains uninitialised byte(s)
+ ...
+
+Syscall param auditsys_auditctl_getstat(stats) contains uninitialised byte(s)
+ ...
+
+Syscall param auditsys(stats) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+186: SYS_auditsys (BSM_AUDITCTL,A_SETSTAT) 3s 1m
+---------------------------------------------------------
+Syscall param auditsys_auditctl_setstat(code) contains uninitialised byte(s)
+ ...
+
+Syscall param auditsys_auditctl_setstat(cmd) contains uninitialised byte(s)
+ ...
+
+Syscall param auditsys_auditctl_setstat(stats) contains uninitialised byte(s)
+ ...
+
+Syscall param auditsys(stats) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
Added: trunk/memcheck/tests/solaris/scalar_auditon_stat.stdout.exp
==============================================================================
(empty)
Added: trunk/memcheck/tests/solaris/scalar_auditon_stat.vgtest
==============================================================================
--- trunk/memcheck/tests/solaris/scalar_auditon_stat.vgtest (added)
+++ trunk/memcheck/tests/solaris/scalar_auditon_stat.vgtest Wed Feb 17 18:11:32 2016
@@ -0,0 +1,4 @@
+prereq: test -e scalar_auditon_stat
+prog: scalar_auditon_stat
+vgopts: -q
+stderr_filter_args:
|