Revert "TUN-1736: Missing headers when passing an invalid path"
This reverts commit 3c93d9b300.
			
			
This commit is contained in:
		
							parent
							
								
									fd4ab314dc
								
							
						
					
					
						commit
						5afbb3fd6d
					
				|  | @ -45,7 +45,16 @@ func H2RequestHeadersToH1Request(h2 []h2mux.Header, h1 *http.Request) error { | ||||||
| 			// Otherwise the host header will be based on the origin URL
 | 			// Otherwise the host header will be based on the origin URL
 | ||||||
| 			h1.Host = header.Value | 			h1.Host = header.Value | ||||||
| 		case ":path": | 		case ":path": | ||||||
| 			h1.URL.Path = header.Value | 			u, err := url.Parse(header.Value) | ||||||
|  | 			if err != nil { | ||||||
|  | 				return fmt.Errorf("unparseable path") | ||||||
|  | 			} | ||||||
|  | 			resolved := h1.URL.ResolveReference(u) | ||||||
|  | 			// prevent escaping base URL
 | ||||||
|  | 			if !strings.HasPrefix(resolved.String(), h1.URL.String()) { | ||||||
|  | 				return fmt.Errorf("invalid path") | ||||||
|  | 			} | ||||||
|  | 			h1.URL = resolved | ||||||
| 		case "content-length": | 		case "content-length": | ||||||
| 			contentLength, err := strconv.ParseInt(header.Value, 10, 64) | 			contentLength, err := strconv.ParseInt(header.Value, 10, 64) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
|  |  | ||||||
|  | @ -1,77 +0,0 @@ | ||||||
| package streamhandler |  | ||||||
| 
 |  | ||||||
| import ( |  | ||||||
| 	"net/http" |  | ||||||
| 	"testing" |  | ||||||
| 
 |  | ||||||
| 	"github.com/cloudflare/cloudflared/h2mux" |  | ||||||
| 
 |  | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| func TestH2RequestHeadersToH1Request_RegularHeaders(t *testing.T) { |  | ||||||
| 	request, err := http.NewRequest(http.MethodGet, "http://example.com", nil) |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 
 |  | ||||||
| 	headersConversionErr := H2RequestHeadersToH1Request( |  | ||||||
| 		[]h2mux.Header{ |  | ||||||
| 			h2mux.Header{ |  | ||||||
| 				Name:  "Mock header 1", |  | ||||||
| 				Value: "Mock value 1", |  | ||||||
| 			}, |  | ||||||
| 			h2mux.Header{ |  | ||||||
| 				Name:  "Mock header 2", |  | ||||||
| 				Value: "Mock value 2", |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 		request, |  | ||||||
| 	) |  | ||||||
| 
 |  | ||||||
| 	assert.Equal(t, http.Header{ |  | ||||||
| 		"Mock header 1": []string{"Mock value 1"}, |  | ||||||
| 		"Mock header 2": []string{"Mock value 2"}, |  | ||||||
| 	}, request.Header) |  | ||||||
| 
 |  | ||||||
| 	assert.NoError(t, headersConversionErr) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func TestH2RequestHeadersToH1Request_NoHeaders(t *testing.T) { |  | ||||||
| 	request, err := http.NewRequest(http.MethodGet, "http://example.com", nil) |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 
 |  | ||||||
| 	headersConversionErr := H2RequestHeadersToH1Request( |  | ||||||
| 		[]h2mux.Header{}, |  | ||||||
| 		request, |  | ||||||
| 	) |  | ||||||
| 
 |  | ||||||
| 	assert.Equal(t, http.Header{}, request.Header) |  | ||||||
| 
 |  | ||||||
| 	assert.NoError(t, headersConversionErr) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func TestH2RequestHeadersToH1Request_InvalidHostPath(t *testing.T) { |  | ||||||
| 	request, err := http.NewRequest(http.MethodGet, "http://example.com", nil) |  | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 
 |  | ||||||
| 	headersConversionErr := H2RequestHeadersToH1Request( |  | ||||||
| 		[]h2mux.Header{ |  | ||||||
| 			h2mux.Header{ |  | ||||||
| 				Name:  ":path", |  | ||||||
| 				Value: "//bad_path/", |  | ||||||
| 			}, |  | ||||||
| 			h2mux.Header{ |  | ||||||
| 				Name:  "Mock header", |  | ||||||
| 				Value: "Mock value", |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 		request, |  | ||||||
| 	) |  | ||||||
| 
 |  | ||||||
| 	assert.Equal(t, http.Header{ |  | ||||||
| 		"Mock header": []string{"Mock value"}, |  | ||||||
| 	}, request.Header) |  | ||||||
| 
 |  | ||||||
| 	assert.Equal(t, request.URL.String(), "http://example.com//bad_path/") |  | ||||||
| 
 |  | ||||||
| 	assert.NoError(t, headersConversionErr) |  | ||||||
| } |  | ||||||
		Loading…
	
		Reference in New Issue