(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description) op: assign_op.Equal rhs: {(SQ <'test git-http-backend-noserver'>)} spids: [4] ) ] redirects: [] ) (C {<.>} {<'./test-lib.sh'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'HTTPD_DOCUMENT_ROOT_PATH='> name: HTTPD_DOCUMENT_ROOT_PATH ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName TRASH_DIRECTORY))} spids: [14] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands:[(C {<test_have_prereq>} {<GREP_STRIPS_CR>})]) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GREP_OPTIONS='> name:GREP_OPTIONS) op: assign_op.Equal rhs: {<-U>} spids: [29] ) ] redirects: [] ) (C {<export>} {<GREP_OPTIONS>}) ] spids: [20 26] ) ] else_action: [] redirects: [] ) (command.ShFunction name: run_backend body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Number 2))}) (command.Simple words: [{<git>} {<http-backend>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<act.out>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<act.err>} ) ] more_env: [ (env_pair name: QUERY_STRING val: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <'['> <Id.Lit_Other '?'> <']'>} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [56] ) (env_pair name: PATH_TRANSLATED val: { (DQ ($ Id.VSub_DollarName HTTPD_DOCUMENT_ROOT_PATH) <'/'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<'['> <Id.Lit_Other '?'> <']'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [70] ) ] do_fork: T ) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: GET body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'REQUEST_METHOD='> name: REQUEST_METHOD ) op: assign_op.Equal rhs: {(DQ <GET>)} spids: [106] ) ] redirects: [] ) (C {<export>} {<REQUEST_METHOD>}) (C {<run_backend>} {(DQ <'/repo.git/'> ($ Id.VSub_Number 1))}) (C {<sane_unset>} {<REQUEST_METHOD>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Pipeline children: [ (command.Simple words: [{<grep>} {(DQ <Status>)} {<act.out>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<act>} ) ] more_env: [] do_fork: T ) ] negated: T stderr_indices: [] ) ] ) action: [ (command.Simple words: [ {<printf>} { (DQ <'Status: 200 OK'> <Id.Lit_BadBackslash '\\'> <r> <Id.Lit_BadBackslash '\\'> <n> ) } ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<act>} ) ] more_env: [] do_fork: T ) ] spids: [137 153] ) ] else_action: [] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {<printf>} { (DQ <'Status: '> ($ Id.VSub_Number 2) <Id.Lit_BadBackslash '\\'> <r> <Id.Lit_BadBackslash '\\'> <n> ) } ] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<exp>})] more_env: [] do_fork: T ) (C {<test_cmp>} {<exp>} {<act>}) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: POST body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'REQUEST_METHOD='> name: REQUEST_METHOD ) op: assign_op.Equal rhs: {(DQ <POST>)} spids: [206] ) ] redirects: [] ) (C {<export>} {<REQUEST_METHOD>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONTENT_TYPE='> name:CONTENT_TYPE) op: assign_op.Equal rhs: {(DQ <'application/x-'> ($ Id.VSub_Number 1) <-request>)} spids: [220] ) ] redirects: [] ) (C {<export>} {<CONTENT_TYPE>}) (C {<run_backend>} {(DQ <'/repo.git/'> ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_Number 2))}) (C {<sane_unset>} {<REQUEST_METHOD>}) (C {<sane_unset>} {<CONTENT_TYPE>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Pipeline children: [ (command.Simple words: [{<grep>} {(DQ <Status>)} {<act.out>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<act>} ) ] more_env: [] do_fork: T ) ] negated: T stderr_indices: [] ) ] ) action: [ (command.Simple words: [ {<printf>} { (DQ <'Status: 200 OK'> <Id.Lit_BadBackslash '\\'> <r> <Id.Lit_BadBackslash '\\'> <n> ) } ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<act>} ) ] more_env: [] do_fork: T ) ] spids: [264 280] ) ] else_action: [] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {<printf>} { (DQ <'Status: '> ($ Id.VSub_Number 3) <Id.Lit_BadBackslash '\\'> <r> <Id.Lit_BadBackslash '\\'> <n> ) } ] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<exp>})] more_env: [] do_fork: T ) (C {<test_cmp>} {<exp>} {<act>}) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<.>} {(DQ ($ Id.VSub_DollarName TEST_DIRECTORY)) <'/t556x_common'>}) (command.ShFunction name: expect_aliased body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'REQUEST_METHOD='> name: REQUEST_METHOD ) op: assign_op.Equal rhs: {(DQ <GET>)} spids: [341] ) ] redirects: [] ) (C {<export>} {<REQUEST_METHOD>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {($ Id.VSub_Number 1)} {<Id.Lit_Equals '='>} {<0>}) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<run_backend>} {(DQ ($ Id.VSub_Number 2))})] spids: [355 366] ) ] else_action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {<run_backend>} {(DQ ($ Id.VSub_Number 2))}) (command.Simple words: [{<echo>} {(DQ <'fatal: \''> ($ Id.VSub_Number 2) <'\': aliased'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<exp.err>} ) ] more_env: [] do_fork: T ) (C {<test_cmp>} {<exp.err>} {<act.err>}) ] ) ] redirects: [] ) ] ) (C {<unset>} {<REQUEST_METHOD>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_expect_success>} {(SQ <'http-backend blocks bad PATH_INFO'>)} { (SQ <'\n'> <'\tconfig http.getanyfile true &&\n'> <'\n'> <'\texpect_aliased 0 /repo.git/HEAD &&\n'> <'\n'> <'\texpect_aliased 1 /repo.git/../HEAD &&\n'> <'\texpect_aliased 1 /../etc/passwd &&\n'> <'\texpect_aliased 1 ../etc/passwd &&\n'> <'\texpect_aliased 1 /etc//passwd &&\n'> <'\texpect_aliased 1 /etc/./passwd &&\n'> <'\texpect_aliased 1 //domain/data.txt\n'> ) } ) (C {<test_done>}) ] )