diff --git a/apps/emqx_ft/src/emqx_ft_storage_exporter_fs.erl b/apps/emqx_ft/src/emqx_ft_storage_exporter_fs.erl index 6738d6fef..702bc35ce 100644 --- a/apps/emqx_ft/src/emqx_ft_storage_exporter_fs.erl +++ b/apps/emqx_ft/src/emqx_ft_storage_exporter_fs.erl @@ -422,7 +422,7 @@ decode_cursor(Cursor) -> true = is_list(Name), {Node, #{transfer => {ClientId, FileId}, name => Name}} catch - error:{_, invalid_json} -> + error:{Loc, JsonError} when is_integer(Loc), is_atom(JsonError) -> error({badarg, cursor}); error:{badmatch, _} -> error({badarg, cursor}); diff --git a/apps/emqx_ft/test/emqx_ft_api_SUITE.erl b/apps/emqx_ft/test/emqx_ft_api_SUITE.erl index 2988e0083..18a8e9841 100644 --- a/apps/emqx_ft/test/emqx_ft_api_SUITE.erl +++ b/apps/emqx_ft/test/emqx_ft_api_SUITE.erl @@ -216,6 +216,16 @@ t_list_files_paging(Config) -> request_json(get, uri(["file_transfer", "files"]) ++ query(#{limit => 0})) ), + ?assertMatch( + {ok, 400, #{<<"code">> := <<"BAD_REQUEST">>}}, + request_json(get, uri(["file_transfer", "files"]) ++ query(#{following => <<>>})) + ), + + ?assertMatch( + {ok, 400, #{<<"code">> := <<"BAD_REQUEST">>}}, + request_json(get, uri(["file_transfer", "files"]) ++ query(#{following => <<"{\"\":}">>})) + ), + ?assertMatch( {ok, 400, #{<<"code">> := <<"BAD_REQUEST">>}}, request_json(