(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'uidrange='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'uidrange='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uidrange='> name:uidrange) op: assign_op.Equal rhs: {(DQ <'60000:100000'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'gidrange='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gidrange='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gidrange='> name:gidrange) op: assign_op.Equal rhs: {(DQ <'60000:100000'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'uidinrange='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'uidinrange='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uidinrange='> name:uidinrange) op: assign_op.Equal rhs: {(DQ <nobody>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'uidoutrange='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'uidoutrange='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uidoutrange='> name:uidoutrange) op: assign_op.Equal rhs: {(DQ <daemon>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'gidinrange='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gidinrange='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gidinrange='> name:gidinrange) op: assign_op.Equal rhs: {(DQ <nobody>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'gidoutrange='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gidoutrange='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gidoutrange='> name:gidoutrange) op: assign_op.Equal rhs: {(DQ <daemon>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'test_num='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'test_num='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_num='> name:test_num) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) (command.ShFunction name_tok: <pass> name: pass body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'ok '> ($ Id.VSub_DollarName test_num) <' # '> ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.BinaryAssign op_id: Id.Arith_PlusEqual left: ($ Id.Lit_ArithVarLike test_num) right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <fail> name: fail body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'not ok '> ($ Id.VSub_DollarName test_num) <' # '> ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.BinaryAssign op_id: Id.Arith_PlusEqual left: ($ Id.Lit_ArithVarLike test_num) right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TMPDIR> var_name: TMPDIR suffix_op: (suffix_op.Unary op:<Id.VTest_Equals _> arg_word:{<Id.Lit_Slash '/'> <tmp>}) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <id> more_env: [] words: [{<id>} {<-u>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'1..0 # SKIP test must be run as root'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] spids: [138 155] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <sysctl> more_env: [] words: [{<sysctl>} {<-N>} {<security.mac.bsdextended>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'1..0 # SKIP mac_bsdextended(4) support isn\'t available'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] spids: [171 188] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName TMPDIR))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <'/tmp'>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <chmod> more_env: [] words: [{<chmod>} {<-Rf>} {<0755>} {($ Id.VSub_DollarName TMPDIR)}] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'1..0 # SKIP failed to chmod '> ($ Id.VSub_DollarName TMPDIR))} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] spids: [225 238] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [204 222] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'playground='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'playground='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'playground='> name: playground ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <mktemp> more_env: [] words: [ {<mktemp>} {<-d>} {($ Id.VSub_DollarName TMPDIR) <'/tmp.XXXXXXX'>} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'1..0 # SKIP failed to create temporary directory'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] spids: [258 273] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <trap> more_env: [] words: [{<trap>} {(DQ <'rmdir '> ($ Id.VSub_DollarName playground))} {<EXIT>} {<INT>} {<TERM>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <mdmfs> more_env: [] words: [{<mdmfs>} {<-s>} {<25m>} {<md>} {($ Id.VSub_DollarName playground)}] redirects: [] do_fork: T ) ] ops: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'1..0 # SKIP failed to mount md device'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] spids: [302 317] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <chmod> more_env: [] words: [{<chmod>} {<a> <Id.Lit_Other '+'> <rwx>} {($ Id.VSub_DollarName playground)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'md_device='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'md_device='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'md_device='> name:md_device) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <mount> more_env: [] words: [{<mount>} {<-p>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {(DQ ($ Id.VSub_DollarName playground))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <awk> more_env: [] words: [{<awk>} {(SQ <'{ gsub(/^\\/dev\\//, "", $1); print $1 }'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <trap> more_env: [] words: [ {<trap>} { (DQ <'umount -f '> ($ Id.VSub_DollarName playground) <'; mdconfig -d -u '> ($ Id.VSub_DollarName md_device) <'; rmdir '> ($ Id.VSub_DollarName playground) ) } {<EXIT>} {<INT>} {<TERM>} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName md_device))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <mount> more_env: [] words: [{<mount>} {<-p>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {($ Id.VSub_DollarName playground)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'1..0 # SKIP md device not properly attached to the system'>)}] redirects: [] do_fork: T ) ] spids: [381 394] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <ugidfw> more_env: [] words: [{<ugidfw>} {<remove>} {<1>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'file1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file1='> name:file1) op: assign_op.Equal rhs: {($ Id.VSub_DollarName playground) <'/test-'> ($ Id.VSub_DollarName uidinrange)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'file2='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file2='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file2='> name:file2) op: assign_op.Equal rhs: {($ Id.VSub_DollarName playground) <'/test-'> ($ Id.VSub_DollarName uidoutrange)} ) ] redirects: [] ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName playground) <'/test-script.sh'>} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <EOF>)} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [<'#!/bin/sh\n'> <': > $1\n'>] ) ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'1..0 # SKIP failed to create test script'>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] spids: [449 462] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <1..30>)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'command1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'command1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'command1='> name:command1) op: assign_op.Equal rhs: { (DQ <'sh '> ($ Id.VSub_DollarName playground) <'/test-script.sh '> ($ Id.VSub_DollarName file1) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'command2='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'command2='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'command2='> name:command2) op: assign_op.Equal rhs: { (DQ <'sh '> ($ Id.VSub_DollarName playground) <'/test-script.sh '> ($ Id.VSub_DollarName file2) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName uidinrange) <' file'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-m>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [508 523] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <chown> more_env: [] words: [ {<chown>} {(DQ ($ Id.VSub_DollarName uidinrange)) <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName gidinrange)) } {($ Id.VSub_DollarName file1)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <chmod> more_env: [] words: [{<chmod>} {<a> <Id.Lit_Other '+'> <w>} {($ Id.VSub_DollarName file1)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName uidoutrange) <' file'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.VSub_DollarName '$command2'> more_env: [] words: [{($ Id.VSub_DollarName command2)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [567 572] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <chown> more_env: [] words: [ {<chown>} {(DQ ($ Id.VSub_DollarName uidoutrange)) <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName gidoutrange)) } {($ Id.VSub_DollarName file2)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <chmod> more_env: [] words: [{<chmod>} {<a> <Id.Lit_Other '+'> <w>} {($ Id.VSub_DollarName file2)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'no rules '> ($ Id.VSub_DollarName uidinrange))} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [625 640] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'no rules '> ($ Id.VSub_DollarName uidoutrange))} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidoutrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [663 678] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <ugidfw> more_env: [] words: [ {<ugidfw>} {<set>} {<1>} {<subject>} {<uid>} {($ Id.VSub_DollarName uidrange)} {<object>} {<mode>} {<rasx>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'subject uid in range'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [727 742] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'subject uid out range'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidoutrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [764 779] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <ugidfw> more_env: [] words: [ {<ugidfw>} {<set>} {<1>} {<subject>} {<gid>} {($ Id.VSub_DollarName gidrange)} {<object>} {<mode>} {<rasx>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'subject gid in range'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [829 844] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'subject gid out range'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidoutrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [866 881] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <which> more_env: [] words: [{<which>} {<jail>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {($ Id.VSub_DollarName playground) <'/test-jail'>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'subject matching jailid'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'jailid='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'jailid='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'jailid='> name:jailid) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <jail> more_env: [] words: [ {<jail>} {<-i>} {<'/'>} {<localhost>} {<127.0.0.1>} {<'/usr/sbin/daemon'>} {<-f>} {<'/bin/sh'>} {<-c>} { (DQ <'(sleep 5; touch '> ($ Id.VSub_DollarName playground) <'/test-jail) &'> ) } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <ugidfw> more_env: [] words: [ {<ugidfw>} {<set>} {<1>} {<subject>} {<jailid>} {($ Id.VSub_DollarName jailid)} {<object>} {<mode>} {<rasx>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sleep> more_env: [] words: [{<sleep>} {<10>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_DollarName playground) <'/test-jail'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fail> more_env: [] words: [ {<fail>} { (DQ <'TODO '> ($ Id.VSub_DollarName desc) <': this testcase fails (see bug # 205481)'> ) } ] redirects: [] do_fork: T ) ] spids: [993 1005] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {($ Id.VSub_DollarName playground) <'/test-jail'>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'subject nonmatching jailid'>)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'jailid='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'jailid='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'jailid='> name:jailid) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Simple blame_tok: <jail> more_env: [] words: [ {<jail>} {<-i>} {<'/'>} {<localhost>} {<127.0.0.1>} {<'/usr/sbin/daemon'>} {<-f>} {<'/bin/sh'>} {<-c>} { (DQ <'(sleep 5; touch '> ($ Id.VSub_DollarName playground) <'/test-jail) &'> ) } ] redirects: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <sleep> more_env: [] words: [{<sleep>} {<10>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-f>} {($ Id.VSub_DollarName playground) <'/test-jail'>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1078 1090] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [898 908] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {(DQ <'skip jail(8) not installed'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {(DQ <'skip jail(8) not installed'>)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <ugidfw> more_env: [] words: [ {<ugidfw>} {<set>} {<1>} {<subject>} {<object>} {<uid>} {($ Id.VSub_DollarName uidrange)} {<mode>} {<rasx>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object uid in range'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1164 1179] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object uid out range'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command2))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1201 1216] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <ugidfw> more_env: [] words: [ {<ugidfw>} {<set>} {<1>} {<subject>} {<object>} {<uid>} {($ Id.VSub_DollarName uidrange)} {<mode>} {<rasx>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object uid in range (different subject)'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidoutrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1256 1271] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object uid out range (different subject)'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidoutrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command2))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1293 1308] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <ugidfw> more_env: [] words: [ {<ugidfw>} {<set>} {<1>} {<subject>} {<object>} {<gid>} {($ Id.VSub_DollarName uidrange)} {<mode>} {<rasx>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object gid in range'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1358 1373] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object gid out range'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command2))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1395 1410] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object gid in range (different subject)'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidoutrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1431 1446] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object gid out range (different subject)'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidoutrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command2))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1468 1483] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <ugidfw> more_env: [] words: [ {<ugidfw>} {<set>} {<1>} {<subject>} {<uid>} {($ Id.VSub_DollarName uidrange)} {<object>} {<filesys>} {<'/'>} {<mode>} {<rasx>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object out of filesys'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1536 1551] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <ugidfw> more_env: [] words: [ {<ugidfw>} {<set>} {<1>} {<subject>} {<uid>} {($ Id.VSub_DollarName uidrange)} {<object>} {<filesys>} {($ Id.VSub_DollarName playground)} {<mode>} {<rasx>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object in filesys'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1595 1610] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <ugidfw> more_env: [] words: [ {<ugidfw>} {<set>} {<1>} {<subject>} {<uid>} {($ Id.VSub_DollarName uidrange)} {<object>} {<suid>} {<mode>} {<rasx>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object notsuid'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1661 1676] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <chmod> more_env: [] words: [{<chmod>} {<u> <Id.Lit_Other '+'> <s>} {($ Id.VSub_DollarName file1)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object suid'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1706 1721] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <chmod> more_env: [] words: [{<chmod>} {<u-s>} {($ Id.VSub_DollarName file1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <ugidfw> more_env: [] words: [ {<ugidfw>} {<set>} {<1>} {<subject>} {<uid>} {($ Id.VSub_DollarName uidrange)} {<object>} {<sgid>} {<mode>} {<rasx>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object notsgid'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1778 1793] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <chmod> more_env: [] words: [{<chmod>} {<g> <Id.Lit_Other '+'> <s>} {($ Id.VSub_DollarName file1)}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object sgid'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1823 1838] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <chmod> more_env: [] words: [{<chmod>} {<g-s>} {($ Id.VSub_DollarName file1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <ugidfw> more_env: [] words: [ {<ugidfw>} {<set>} {<1>} {<subject>} {<uid>} {($ Id.VSub_DollarName uidrange)} {<object>} {<uid_of_subject>} {<mode>} {<rasx>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object uid notmatches subject'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command2))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1896 1911] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object uid matches subject'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [1933 1948] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <ugidfw> more_env: [] words: [ {<ugidfw>} {<set>} {<1>} {<subject>} {<uid>} {($ Id.VSub_DollarName uidrange)} {<object>} {<gid_of_subject>} {<mode>} {<rasx>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object gid notmatches subject'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command2))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [2000 2015] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object gid matches subject'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [2037 2052] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object not type'>)} ) ] redirects: [] ) (command.Simple blame_tok: <ugidfw> more_env: [] words: [ {<ugidfw>} {<set>} {<1>} {<subject>} {<uid>} {($ Id.VSub_DollarName uidrange)} {<object>} {<type>} {<dbclsp>} {<mode>} {<rasx>} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [2105 2120] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'desc='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'desc='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <'object type'>)} ) ] redirects: [] ) (command.Simple blame_tok: <ugidfw> more_env: [] words: [ {<ugidfw>} {<set>} {<1>} {<subject>} {<uid>} {($ Id.VSub_DollarName uidrange)} {<object>} {<type>} {<r>} {<mode>} {<rasx>} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <su> more_env: [] words: [ {<su>} {<-fm>} {($ Id.VSub_DollarName uidinrange)} {<-c>} {(DQ ($ Id.VSub_DollarName command1))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <fail> more_env: [] words: [{<fail>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] spids: [2164 2179] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <pass> more_env: [] words: [{<pass>} {($ Id.VSub_DollarName desc)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] )