Просмотр исходного кода

Make sure a path parsing error in the router gives a 400

Loïc Hoguin 7 лет назад
Родитель
Сommit
6fc05a6d64
2 измененных файлов с 9 добавлено и 3 удалено
  1. 2 3
      src/cowboy_router.erl
  2. 7 0
      test/misc_SUITE.erl

+ 2 - 3
src/cowboy_router.erl

@@ -325,9 +325,8 @@ split_path(Path, Acc) ->
 				<< Segment:Pos/binary, _:8, Rest/bits >> = Path,
 				split_path(Rest, [Segment|Acc])
 		end
-	catch
-		error:badarg ->
-			badrequest
+	catch error:_ ->
+		badrequest
 	end.
 
 remove_dot_segments([], Acc) ->

+ 7 - 0
test/misc_SUITE.erl

@@ -39,6 +39,13 @@ init_dispatch(_) ->
 		{"/", hello_h, []}
 	]}]).
 
+router_invalid_path(Config) ->
+	doc("Ensure a path with invalid percent-encoded characters results in a 400."),
+	ConnPid = gun_open(Config),
+	Ref = gun:get(ConnPid, "/version/path/%\\u0016\\u0016/path"),
+	{response, _, 400, _} = gun:await(ConnPid, Ref),
+	ok.
+
 set_env(Config) ->
 	doc("Live replace a middleware environment value."),
 	ConnPid1 = gun_open(Config),