11da7c95b62537f066c74972e2b59a322446ca86eDmitry V. LevinBEGIN { 2c55bfb0045094c38a158d22666bea78682df1716Dmitry V. Levin r_uint = "(0|[1-9][0-9]*)" 3c55bfb0045094c38a158d22666bea78682df1716Dmitry V. Levin regexp = "^getuid" suffix "\\(\\)[[:space:]]+= " r_uint "$" 4c55bfb0045094c38a158d22666bea78682df1716Dmitry V. Levin expected = "getuid" 51da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin fail = 0 61da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin} 71da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin 8c55bfb0045094c38a158d22666bea78682df1716Dmitry V. Levinregexp == "" { 91da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin fail = 1 101da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin next 111da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin} 121da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin 131da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin{ 14c55bfb0045094c38a158d22666bea78682df1716Dmitry V. Levin if (match($0, regexp, a)) { 1508b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin if (expected == "getuid") { 1608b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin uid = a[1] 1708b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin expected = "setuid" 1808b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin regexp = "^setuid" suffix "\\(" uid "\\)[[:space:]]+= 0$" 1908b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin } else if (expected == "setuid") { 2008b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin expected = "getresuid" 2108b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin regexp = "^getresuid" suffix "\\(\\[" uid "\\], \\[" uid "\\], \\[" uid "\\]\\)[[:space:]]+= 0$" 2208b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin } else if (expected == "getresuid") { 2308b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin expected = "setreuid" 2408b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin regexp = "^setreuid" suffix "\\(-1, -1\\)[[:space:]]+= 0$" 2508b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin } else if (expected == "setreuid") { 2608b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin expected = "setresuid" 273a15bc8adf3031b474a81e1c672c11817c8ee8f0Dmitry V. Levin regexp = "^setresuid" suffix "\\(" uid ", -1, -1\\)[[:space:]]+= 0$" 2808b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin } else if (expected == "setresuid") { 2968804b326709fadc7bb03f510a11771f07216a59Dmitry V. Levin expected = "fchown" 3068804b326709fadc7bb03f510a11771f07216a59Dmitry V. Levin regexp = "^fchown" suffix "\\(1, -1, -1\\)[[:space:]]+= 0$" 3168804b326709fadc7bb03f510a11771f07216a59Dmitry V. Levin } else if (expected == "fchown") { 3208b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin expected = "1st getgroups" 3308b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin regexp = "^getgroups" suffix "\\(0, NULL\\)[[:space:]]+= " r_uint "$" 3408b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin } else if (expected == "1st getgroups") { 3508b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin ngroups = a[1] 3608b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin if (ngroups == "0") 3708b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin list="" 3808b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin else if (ngroups == "1") 3908b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin list=r_uint 4008b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin else 4108b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin list=r_uint "(, " r_uint "){" (ngroups - 1) "}" 4208b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin expected = "2nd getgroups" 4308b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin regexp = "^getgroups" suffix "\\(" ngroups ", \\[" list "\\]\\)[[:space:]]+= " ngroups "$" 4408b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin } else if (expected == "2nd getgroups") { 4508b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin expected = "the last line" 4608b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin regexp = "^\\+\\+\\+ exited with 0 \\+\\+\\+$" 4708b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin } else if (expected == "the last line") { 4808b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin expected = "nothing" 4908b6397d13580fd82450a43f3a65237041679421Dmitry V. Levin regexp = "" 50c55bfb0045094c38a158d22666bea78682df1716Dmitry V. Levin } 511da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin } 521da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin} 531da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin 541da7c95b62537f066c74972e2b59a322446ca86eDmitry V. LevinEND { 551da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin if (fail) { 561da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin print "Unexpected output after exit" 571da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin exit 1 581da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin } 59c55bfb0045094c38a158d22666bea78682df1716Dmitry V. Levin if (regexp == "") 601da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin exit 0 61c55bfb0045094c38a158d22666bea78682df1716Dmitry V. Levin print "error: " expected " doesn't match" 621da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin exit 1 631da7c95b62537f066c74972e2b59a322446ca86eDmitry V. Levin} 64