You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
By default, surrogate escaping is not enabled and any request with a filename with "Modified UTF8" encoding will crash :
10:21:11.254 - <1729885280> wsgidav.wsgidav_app INFO : 127.0.0.1 - 1mm0rt41 - [2020-04-15 08:21:11] "PROPFIND /home/desktop.ini" length=0, depth=0, elap=0.001sec -> 404 Not Found
10:21:13.980 - <1721496672> wsgidav.error_printer ERROR : Caught Exception
Traceback (most recent call last):
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/error_printer.py", line 52, in __call__
for v in app_iter:
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/request_resolver.py", line 213, in __call__
for v in app_iter:
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/request_server.py", line 126, in __call__
app_iter = provider.custom_request_handler(environ, start_response, method)
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/dav_provider.py", line 1525, in custom_request_handler
return default_handler(environ, start_response)
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/request_server.py", line 355, in do_PROPFIND
propList = child.get_properties("allprop")
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/dav_provider.py", line 560, in get_properties
name_list = self.get_property_names(mode == "allprop")
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/dav_provider.py", line 518, in get_property_names
if self.get_etag() is not None:
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/fs_dav_provider.py", line 66, in get_etag
return util.get_etag(self._file_path)
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/util.py", line 973, in get_etag
file_path = file_path.encode("utf8")
UnicodeEncodeError: 'utf-8' codec can't encode character '\udcc3' in position 61: surrogates not allowed
ValueError("invalid literal for int() with base 10: ''",)
Traceback (most recent call last):
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cheroot/wsgi.py", line 145, in respond
for chunk in filter(None, response):
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/wsgidav_app.py", line 563, in __call__
for v in app_iter:
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/debug_filter.py", line 157, in __call__
for v in app_iter:
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/error_printer.py", line 52, in __call__
for v in app_iter:
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/request_resolver.py", line 213, in __call__
for v in app_iter:
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/request_server.py", line 126, in __call__
app_iter = provider.custom_request_handler(environ, start_response, method)
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/dav_provider.py", line 1525, in custom_request_handler
return default_handler(environ, start_response)
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/request_server.py", line 355, in do_PROPFIND
propList = child.get_properties("allprop")
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/dav_provider.py", line 560, in get_properties
name_list = self.get_property_names(mode == "allprop")
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/dav_provider.py", line 518, in get_property_names
if self.get_etag() is not None:
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/fs_dav_provider.py", line 66, in get_etag
return util.get_etag(self._file_path)
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/wsgidav/util.py", line 973, in get_etag
file_path = file_path.encode("utf8")
UnicodeEncodeError: 'utf-8' codec can't encode character '\udcc3' in position 61: surrogates not allowed
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cheroot/server.py", line 1269, in communicate
req.respond()
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cheroot/server.py", line 1071, in respond
self.server.gateway(self).respond()
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cheroot/wsgi.py", line 151, in respond
self.req.ensure_headers_sent()
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cheroot/server.py", line 1118, in ensure_headers_sent
self.send_headers()
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cheroot/server.py", line 1136, in send_headers
status = int(self.status[:3])
The fix is easy, just change the line 973 in the file "wsgidav/util.py"
from:
I have files with french charset on Windows.
Some of them are encoded in the modified utf8 => https://stackoverflow.com/questions/51001150/what-are-surrogate-characters-in-utf-8
By default, surrogate escaping is not enabled and any request with a filename with "Modified UTF8" encoding will crash :
The fix is easy, just change the line 973 in the file "wsgidav/util.py"
from:
to
The text was updated successfully, but these errors were encountered: