1#! /usr/bin/ksh
2#
3#
4# This file and its contents are supplied under the terms of the
5# Common Development and Distribution License ("CDDL"), version 1.0.
6# You may only use this file in accordance with the terms of version
7# 1.0 of the CDDL.
8#
9# A full copy of the text of the CDDL should have accompanied this
10# source.  A copy of the CDDL is also available via the Internet at
11# http://www.illumos.org/license/CDDL.
12#
13
14#
15# Copyright 2015, Richard Lowe.
16# Copyright 2019 Joyent, Inc.
17#
18
19mkdir /tmp/secflags-test.$$
20cd /tmp/secflags-test.$$
21
22/usr/bin/psecflags -s aslr -e sleep 100000 &
23pid=$!
24# Make sure we generate a kernel core we can find
25coreadm -p core $pid
26enabled=$(/usr/bin/svcprop -p config_params/process_enabled coreadm)
27coreadm_restore=""
28if [[ "$enabled" = "false" ]]; then
29    coreadm_restore="/usr/bin/coreadm -d process"
30    coreadm -e process
31fi
32
33cleanup() {
34    kill $pid >/dev/null 2>&1
35    cd /
36    rm -fr /tmp/secflags-test.$$
37
38    $coreadm_restore
39}
40
41trap cleanup EXIT
42
43sleep 1
44## gcore-produced core
45gcore $pid >/dev/null
46
47cat > gcore-expected.$$ <<EOF
48core 'core.$pid' of $pid:	sleep 100000
49	E:	aslr
50	I:	aslr
51EOF
52
53/usr/bin/psecflags core.${pid} | grep -v '[LU]:' > gcore-output.$$
54
55if ! diff -u gcore-expected.$$ gcore-output.$$; then
56    $coreadm_restore
57    exit 1;
58fi
59
60## kernel-produced core
61kill -SEGV $pid
62wait $pid >/dev/null 2>&1
63$coreadm_restore
64
65cat > core-expected.$$ <<EOF
66core 'core' of $pid:	sleep 100000
67	E:	aslr
68	I:	aslr
69EOF
70
71/usr/bin/psecflags core | grep -v '[LU]:' > core-output.$$
72
73if ! diff -u core-expected.$$ core-output.$$; then
74    exit 1;
75fi
76
77exit 0
78