Skip to content

Commit ccafcd2

Browse files
authored
Make sure last wins on bad queries works with maps (#1107)
1 parent 7cfa3e8 commit ccafcd2

2 files changed

Lines changed: 5 additions & 1 deletion

File tree

lib/plug/conn/query.ex

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,12 @@ defmodule Plug.Conn.Query do
168168
parts = :binary.split(rest, pattern)
169169

170170
case acc do
171-
%{^key => current} ->
171+
%{^key => current} when is_list(current) or is_map(current) ->
172172
Map.put(acc, key, assign_split(parts, value, current, pattern))
173173

174+
%{^key => _} ->
175+
acc
176+
174177
%{} ->
175178
Map.put(acc, key, assign_split(parts, value, :none, pattern))
176179

test/plug/conn/query_test.exs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ defmodule Plug.Conn.QueryTest do
5151
assert decode("x[]=1&x[y]=1")["x"]["y"] == "1"
5252
assert decode("x[y][][w]=2&x[y]=1")["x"]["y"] == "1"
5353
assert decode("x=1&x[y]=1")["x"]["y"] == "1"
54+
assert decode("x[y][0][w]=2&x[y]=1")["x"]["y"] == "1"
5455
end
5556

5657
test "decode_pair simple queries" do

0 commit comments

Comments
 (0)