Dmitry V. Levin | 1da7c95 | 2014-12-13 18:24:13 +0000 | [diff] [blame] | 1 | BEGIN { |
Dmitry V. Levin | c55bfb0 | 2014-12-15 23:44:31 +0000 | [diff] [blame] | 2 | r_uint = "(0|[1-9][0-9]*)" |
| 3 | regexp = "^getuid" suffix "\\(\\)[[:space:]]+= " r_uint "$" |
| 4 | expected = "getuid" |
Dmitry V. Levin | 1da7c95 | 2014-12-13 18:24:13 +0000 | [diff] [blame] | 5 | fail = 0 |
Dmitry V. Levin | 1da7c95 | 2014-12-13 18:24:13 +0000 | [diff] [blame] | 6 | } |
| 7 | |
Dmitry V. Levin | c55bfb0 | 2014-12-15 23:44:31 +0000 | [diff] [blame] | 8 | regexp == "" { |
Dmitry V. Levin | 1da7c95 | 2014-12-13 18:24:13 +0000 | [diff] [blame] | 9 | fail = 1 |
| 10 | next |
| 11 | } |
| 12 | |
Dmitry V. Levin | 1da7c95 | 2014-12-13 18:24:13 +0000 | [diff] [blame] | 13 | { |
Dmitry V. Levin | c55bfb0 | 2014-12-15 23:44:31 +0000 | [diff] [blame] | 14 | if (match($0, regexp, a)) { |
Dmitry V. Levin | 08b6397 | 2015-01-09 04:10:54 +0000 | [diff] [blame^] | 15 | 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. Levin | c55bfb0 | 2014-12-15 23:44:31 +0000 | [diff] [blame] | 50 | } |
Dmitry V. Levin | 1da7c95 | 2014-12-13 18:24:13 +0000 | [diff] [blame] | 51 | } |
Dmitry V. Levin | 1da7c95 | 2014-12-13 18:24:13 +0000 | [diff] [blame] | 52 | } |
| 53 | |
| 54 | END { |
| 55 | if (fail) { |
| 56 | print "Unexpected output after exit" |
| 57 | exit 1 |
| 58 | } |
Dmitry V. Levin | c55bfb0 | 2014-12-15 23:44:31 +0000 | [diff] [blame] | 59 | if (regexp == "") |
Dmitry V. Levin | 1da7c95 | 2014-12-13 18:24:13 +0000 | [diff] [blame] | 60 | exit 0 |
Dmitry V. Levin | c55bfb0 | 2014-12-15 23:44:31 +0000 | [diff] [blame] | 61 | print "error: " expected " doesn't match" |
Dmitry V. Levin | 1da7c95 | 2014-12-13 18:24:13 +0000 | [diff] [blame] | 62 | exit 1 |
| 63 | } |