diff options
author | Kazuhiro NISHIYAMA <[email protected]> | 2020-06-19 20:06:26 +0900 |
---|---|---|
committer | Kazuhiro NISHIYAMA <[email protected]> | 2020-06-19 20:13:22 +0900 |
commit | 6fe1919486111bcdd5ef41fea15b0e82f7f50d82 () | |
tree | a4ff099ab6eec915a493fc92867b1a4c241edd59 /lib | |
parent | daa9dcd57ecb84e108d2390a361790f29ed415e7 (diff) |
Fix failure on mswin CI
https://rubyci.org/logs/mswinci.japaneast.cloudapp.azure.com/vc12-x64/ruby-master/log/20200619T054159Z.fail.html.gz ``` 1) Failure: WEBrick::TestFileHandler#test_cjk_in_path [D:/tmp/mswin-build20200619-14304-utgij/ruby/test/webrick/utils.rb:72]: exceptions on 2 threads: webrick log start: [2020-06-19 16:28:42] ERROR `/あ.txt' not found. webrick log end Filesystem encoding is Windows-31J. <"200"> expected but was <"404">. --- <[]> expected but was <["[2020-06-19 16:28:42] ERROR `/\xE3\x81\x82.txt' not found.\n"]>. ``` `prevent_directory_traversal` treats `path_info` as filesystem encoding. So path_info should be filesystem encoding in request URL. On some environments, fallback to ASCII-8BIT when EncodingError.
-rw-r--r-- | lib/webrick/httpservlet/filehandler.rb | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -324,8 +324,17 @@ module WEBrick end def set_filename(req, res) - res.filename = @root.b path_info = req.path_info.scan(%r|/[^/]*|) path_info.unshift("") # dummy for checking @root dir while base = path_info.first |