summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/inets/src/http_server/httpd_util.erl22
-rw-r--r--lib/inets/test/httpd_SUITE.erl18
2 files changed, 20 insertions, 20 deletions
diff --git a/lib/inets/src/http_server/httpd_util.erl b/lib/inets/src/http_server/httpd_util.erl
index 4ef2d8b34c..12cd4cf2e6 100644
--- a/lib/inets/src/http_server/httpd_util.erl
+++ b/lib/inets/src/http_server/httpd_util.erl
@@ -421,27 +421,12 @@ split_path(URI) ->
query := Query} ->
{Path, Query};
#{path := Path} ->
- split_path(Path, [])
+ {Path, []}
end.
add_hashmark(Query, Fragment) ->
Query ++ "#" ++ Fragment.
-split_path([],SoFar) ->
- {lists:reverse(SoFar),[]};
-split_path([$/|Rest],SoFar) ->
- Path=lists:reverse(SoFar),
- case file:read_file_info(Path) of
- {ok,FileInfo} when FileInfo#file_info.type =:= regular ->
- {Path,[$/|Rest]};
- {ok, _FileInfo} ->
- split_path(Rest,[$/|SoFar]);
- {error, _Reason} ->
- split_path(Rest,[$/|SoFar])
- end;
-split_path([C|Rest],SoFar) ->
- split_path(Rest,[C|SoFar]).
-
%% split_script_path, URI has been decoded once when validate
%% and should only be decoded once(RFC3986, 2.4).
@@ -454,10 +439,9 @@ split_script_path(URI) ->
not_a_script;
#{path := Path,
query := Query} ->
- {Script, PathInfo} = split_path(Path, []),
- {Script, {PathInfo, Query}};
+ {Path, {[], Query}};
#{path := Path} ->
- split_path(Path, [])
+ {Path, []}
end.
%% suffix
diff --git a/lib/inets/test/httpd_SUITE.erl b/lib/inets/test/httpd_SUITE.erl
index 1445ff89ac..2757f869ca 100644
--- a/lib/inets/test/httpd_SUITE.erl
+++ b/lib/inets/test/httpd_SUITE.erl
@@ -163,7 +163,8 @@ http_get() ->
max_header,
max_content_length,
ignore_invalid_header,
- ipv6
+ ipv6,
+ same_file_name_dir_name
].
@@ -769,6 +770,21 @@ ipv6(Config) when is_list(Config) ->
end.
%%-------------------------------------------------------------------------
+same_file_name_dir_name() ->
+ [{doc,"Test that URI path that has a filename in it is not interprated as the file"}].
+same_file_name_dir_name(Config) when is_list(Config) ->
+ Version = proplists:get_value(http_version, Config),
+ Host = proplists:get_value(host, Config),
+ Type = proplists:get_value(type, Config),
+ ok = httpd_test_lib:verify_request(Type, Host,
+ proplists:get_value(port, Config),
+ transport_opts(Type, Config),
+ proplists:get_value(node, Config),
+ http_request("GET /index.html/foo.html ", Version, Host),
+ [{statuscode, 404},
+ {version, Version}]).
+
+%%-------------------------------------------------------------------------
chunked_post() ->
[{doc,"Test option max_client_body_chunk"}].
chunked_post(Config) when is_list(Config) ->