blob: b93fa0052e243428389c1cf2378cc82add6f9406 [file] [log] [blame]
Dmitry V. Levin1da7c952014-12-13 18:24:13 +00001BEGIN {
Dmitry V. Levinc55bfb02014-12-15 23:44:31 +00002 r_uint = "(0|[1-9][0-9]*)"
3 regexp = "^getuid" suffix "\\(\\)[[:space:]]+= " r_uint "$"
4 expected = "getuid"
Dmitry V. Levin1da7c952014-12-13 18:24:13 +00005 fail = 0
Dmitry V. Levin1da7c952014-12-13 18:24:13 +00006}
7
Dmitry V. Levinc55bfb02014-12-15 23:44:31 +00008regexp == "" {
Dmitry V. Levin1da7c952014-12-13 18:24:13 +00009 fail = 1
10 next
11}
12
Dmitry V. Levin1da7c952014-12-13 18:24:13 +000013{
Dmitry V. Levinc55bfb02014-12-15 23:44:31 +000014 if (match($0, regexp, a)) {
Dmitry V. Levin08b63972015-01-09 04:10:54 +000015 if (expected == "getuid") {
16 uid = a[1]
17 expected = "setuid"
18 regexp = "^setuid" suffix "\\(" uid "\\)[[:space:]]+= 0$"
19 } else if (expected == "setuid") {
20 expected = "getresuid"
21 regexp = "^getresuid" suffix "\\(\\[" uid "\\], \\[" uid "\\], \\[" uid "\\]\\)[[:space:]]+= 0$"
22 } else if (expected == "getresuid") {
23 expected = "setreuid"
24 regexp = "^setreuid" suffix "\\(-1, -1\\)[[:space:]]+= 0$"
25 } else if (expected == "setreuid") {
26 expected = "setresuid"
27 regexp = "^setresuid" suffix "\\(-1, " uid ", -1\\)[[:space:]]+= 0$"
28 } else if (expected == "setresuid") {
29 expected = "chown"
30 regexp = "^chown" suffix "\\(\".\", -1, -1\\)[[:space:]]+= 0$"
31 } else if (expected == "chown") {
32 expected = "1st getgroups"
33 regexp = "^getgroups" suffix "\\(0, NULL\\)[[:space:]]+= " r_uint "$"
34 } else if (expected == "1st getgroups") {
35 ngroups = a[1]
36 if (ngroups == "0")
37 list=""
38 else if (ngroups == "1")
39 list=r_uint
40 else
41 list=r_uint "(, " r_uint "){" (ngroups - 1) "}"
42 expected = "2nd getgroups"
43 regexp = "^getgroups" suffix "\\(" ngroups ", \\[" list "\\]\\)[[:space:]]+= " ngroups "$"
44 } else if (expected == "2nd getgroups") {
45 expected = "the last line"
46 regexp = "^\\+\\+\\+ exited with 0 \\+\\+\\+$"
47 } else if (expected == "the last line") {
48 expected = "nothing"
49 regexp = ""
Dmitry V. Levinc55bfb02014-12-15 23:44:31 +000050 }
Dmitry V. Levin1da7c952014-12-13 18:24:13 +000051 }
Dmitry V. Levin1da7c952014-12-13 18:24:13 +000052}
53
54END {
55 if (fail) {
56 print "Unexpected output after exit"
57 exit 1
58 }
Dmitry V. Levinc55bfb02014-12-15 23:44:31 +000059 if (regexp == "")
Dmitry V. Levin1da7c952014-12-13 18:24:13 +000060 exit 0
Dmitry V. Levinc55bfb02014-12-15 23:44:31 +000061 print "error: " expected " doesn't match"
Dmitry V. Levin1da7c952014-12-13 18:24:13 +000062 exit 1
63}