Fixed a previously character changes in WSF_REQUEST (related to safe_filename), and modified the implementation to use inspect

Fixed the request_content_type computation
Cosmetic in REQUEST_RESOURCE_HANDLER_HELPER
This commit is contained in:
Jocelyn Fiat
2011-10-27 16:00:33 +02:00
parent 8e4e7a5084
commit 0d637d478a
3 changed files with 88 additions and 37 deletions

View File

@@ -73,11 +73,17 @@ feature -- Query
local local
s: detachable READABLE_STRING_8 s: detachable READABLE_STRING_8
i,n: INTEGER i,n: INTEGER
l_accept_lst: detachable ARRAYED_LIST [READABLE_STRING_8]
do do
l_accept_lst := accepted_content_types (request)
if attached request.content_type as ct then if attached request.content_type as ct then
Result := ct if l_accept_lst /= Void then
l_accept_lst.put_front (ct)
else else
if attached accepted_content_types (request) as l_accept_lst then Result := ct
end
end
if Result = Void and l_accept_lst /= Void then
from from
l_accept_lst.start l_accept_lst.start
until until
@@ -103,7 +109,6 @@ feature -- Query
end end
end end
end end
end
feature -- Query feature -- Query

View File

@@ -1205,11 +1205,7 @@ feature {NONE} -- Temporary File handling
local local
c: CHARACTER c: CHARACTER
i, n, p: INTEGER i, n, p: INTEGER
l_accentued, l_non_accentued: STRING
do do
l_accentued := "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
l_non_accentued := "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy"
--| Compute safe filename, to avoid creating impossible filename, or dangerous one --| Compute safe filename, to avoid creating impossible filename, or dangerous one
from from
i := 1 i := 1
@@ -1225,9 +1221,59 @@ feature {NONE} -- Temporary File handling
when 'A' .. 'Z', 'a' .. 'z', '0' .. '9' then when 'A' .. 'Z', 'a' .. 'z', '0' .. '9' then
Result.extend (c) Result.extend (c)
else else
p := l_accentued.index_of (c, 1) inspect c
if p > 0 then when 'À' then Result.extend ('A')
Result.extend (l_non_accentued[p]) when 'Á' then Result.extend ('A')
when 'Â' then Result.extend ('A')
when 'Ã' then Result.extend ('A')
when 'Ä' then Result.extend ('A')
when 'Å' then Result.extend ('A')
when 'Ç' then Result.extend ('C')
when 'È' then Result.extend ('E')
when 'É' then Result.extend ('E')
when 'Ê' then Result.extend ('E')
when 'Ë' then Result.extend ('E')
when 'Ì' then Result.extend ('I')
when 'Í' then Result.extend ('I')
when 'Î' then Result.extend ('I')
when 'Ï' then Result.extend ('I')
when 'Ò' then Result.extend ('O')
when 'Ó' then Result.extend ('O')
when 'Ô' then Result.extend ('O')
when 'Õ' then Result.extend ('O')
when 'Ö' then Result.extend ('O')
when 'Ù' then Result.extend ('U')
when 'Ú' then Result.extend ('U')
when 'Û' then Result.extend ('U')
when 'Ü' then Result.extend ('U')
when 'Ý' then Result.extend ('Y')
when 'à' then Result.extend ('a')
when 'á' then Result.extend ('a')
when 'â' then Result.extend ('a')
when 'ã' then Result.extend ('a')
when 'ä' then Result.extend ('a')
when 'å' then Result.extend ('a')
when 'ç' then Result.extend ('c')
when 'è' then Result.extend ('e')
when 'é' then Result.extend ('e')
when 'ê' then Result.extend ('e')
when 'ë' then Result.extend ('e')
when 'ì' then Result.extend ('i')
when 'í' then Result.extend ('i')
when 'î' then Result.extend ('i')
when 'ï' then Result.extend ('i')
when 'ð' then Result.extend ('o')
when 'ò' then Result.extend ('o')
when 'ó' then Result.extend ('o')
when 'ô' then Result.extend ('o')
when 'õ' then Result.extend ('o')
when 'ö' then Result.extend ('o')
when 'ù' then Result.extend ('u')
when 'ú' then Result.extend ('u')
when 'û' then Result.extend ('u')
when 'ü' then Result.extend ('u')
when 'ý' then Result.extend ('y')
when 'ÿ' then Result.extend ('y')
else else
Result.extend ('-') Result.extend ('-')
end end