| xf.li | 6c8fc1e | 2023-08-12 00:11:09 -0700 | [diff] [blame] | 1 | <testcase> | 
 | 2 | # | 
 | 3 | # This test is crafted to reproduce oss-fuzz bug | 
 | 4 | # https://crbug.com/oss-fuzz/17954 | 
 | 5 | # | 
 | 6 | <info> | 
 | 7 | <keywords> | 
 | 8 | HTTP | 
 | 9 | HTTP GET | 
 | 10 | HTTP proxy | 
 | 11 | followlocation | 
 | 12 | </keywords> | 
 | 13 | </info> | 
 | 14 | # | 
 | 15 | # Server-side | 
 | 16 | <reply> | 
 | 17 | <data> | 
 | 18 | HTTP/1.1 302 OK
 | 
 | 19 | Location: http://example.net/there/it/is/../../tes t case=/%TESTNUMBER0002? yes no
 | 
 | 20 | Date: Tue, 09 Nov 2010 14:49:00 GMT
 | 
 | 21 | Content-Length: 0
 | 
 | 22 | 
 | 
 | 23 | </data> | 
 | 24 | <data2> | 
 | 25 | HTTP/1.1 200 OK
 | 
 | 26 | Location: this should be ignored
 | 
 | 27 | Date: Tue, 09 Nov 2010 14:49:00 GMT
 | 
 | 28 | Content-Length: 5
 | 
 | 29 | 
 | 
 | 30 | body | 
 | 31 | </data2> | 
 | 32 | <datacheck> | 
 | 33 | HTTP/1.1 302 OK
 | 
 | 34 | Location: http://example.net/there/it/is/../../tes t case=/%TESTNUMBER0002? yes no
 | 
 | 35 | Date: Tue, 09 Nov 2010 14:49:00 GMT
 | 
 | 36 | Content-Length: 0
 | 
 | 37 | 
 | 
 | 38 | HTTP/1.1 200 OK
 | 
 | 39 | Location: this should be ignored
 | 
 | 40 | Date: Tue, 09 Nov 2010 14:49:00 GMT
 | 
 | 41 | Content-Length: 5
 | 
 | 42 | 
 | 
 | 43 | body | 
 | 44 | </datacheck> | 
 | 45 | </reply> | 
 | 46 |  | 
 | 47 | # | 
 | 48 | # Client-side | 
 | 49 | <client> | 
 | 50 | <server> | 
 | 51 | http | 
 | 52 | </server> | 
 | 53 |  <name> | 
 | 54 | HTTP redirect with dotdots and whitespaces in absolute Location: URL | 
 | 55 |  </name> | 
 | 56 |  <command> | 
 | 57 | http://example.com/please/../gimme/%TESTNUMBER?foobar#hello -L -x http://%HOSTIP:%HTTPPORT | 
 | 58 | </command> | 
 | 59 | <features> | 
 | 60 | proxy | 
 | 61 | </features> | 
 | 62 | </client> | 
 | 63 |  | 
 | 64 | # | 
 | 65 | # Verify data after the test has been "shot" | 
 | 66 | <verify> | 
 | 67 | <protocol> | 
 | 68 | GET http://example.com/gimme/%TESTNUMBER?foobar HTTP/1.1
 | 
 | 69 | Host: example.com
 | 
 | 70 | User-Agent: curl/%VERSION
 | 
 | 71 | Accept: */*
 | 
 | 72 | Proxy-Connection: Keep-Alive
 | 
 | 73 | 
 | 
 | 74 | GET http://example.net/there/tes%20t%20case=/%TESTNUMBER0002?+yes+no HTTP/1.1
 | 
 | 75 | Host: example.net
 | 
 | 76 | User-Agent: curl/%VERSION
 | 
 | 77 | Accept: */*
 | 
 | 78 | Proxy-Connection: Keep-Alive
 | 
 | 79 | 
 | 
 | 80 | </protocol> | 
 | 81 | </verify> | 
 | 82 | </testcase> |