Plain GET-request to /users/actor/inbox crashes the server
I accidentally discovered that a simple GET-request could lead to a process termination:
Request: GET /users/sojka/inbox
** (exit) an exception was raised:
** (FunctionClauseError) no function clause matching in Plug.Conn.resp/3
… stack: [{nil, :nickname, [], []}, {Pleroma.Web.ActivityPub.ActivityPubController, :read_inbox, 2, [file: 'lib/pleroma/web/activity_pub/activity_pub_controller.ex', line: 255]}, …
19:12:03.761 [error] #PID<0.7880.0> running Pleroma.Web.Endpoint (connection #PID<0.7879.0>, stream id 1) terminated
Quick-and-dirty patch:
index 08bf1c752..d1e99be38 100644
--- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex
+++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex
@@ -252,7 +252,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do
def whoami(_conn, _params), do: {:error, :not_found}
def read_inbox(%{assigns: %{user: user}} = conn, %{"nickname" => nickname} = params) do
- if nickname == user.nickname do
+ if nickname == user[:nickname] do
conn
|> put_resp_content_type("application/activity+json")
|> json(UserView.render("inbox.json", %{user: user, max_id: params["max_id"]}))
@@ -260,7 +260,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do
err =
dgettext("errors", "can't read inbox of %{nickname} as %{as_nickname}",
nickname: nickname,
- as_nickname: user.nickname
+ as_nickname: user[:nickname]
)
conn