Disallow nil hosts in should_federate

This commit is contained in:
FloatingGhost 2023-08-15 23:12:04 +01:00
parent 43c5fd5db0
commit 94d1af2c4c
3 changed files with 17 additions and 1 deletions

View file

@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## Unreleased
## Fixed
- Issue where a bad inbox URL could break federation
## 2023.08 ## 2023.08
## Added ## Added

View file

@ -115,13 +115,17 @@ defmodule Pleroma.Web.ActivityPub.Publisher do
def should_federate?(url) do def should_federate?(url) do
%{host: host} = URI.parse(url) %{host: host} = URI.parse(url)
with allowed <- allowed_instances(), with {:nil, false} <- {:nil, is_nil(host)},
allowed <- allowed_instances(),
false <- Enum.empty?(allowed) do false <- Enum.empty?(allowed) do
allowed allowed
|> Pleroma.Web.ActivityPub.MRF.instance_list_from_tuples() |> Pleroma.Web.ActivityPub.MRF.instance_list_from_tuples()
|> Pleroma.Web.ActivityPub.MRF.subdomains_regex() |> Pleroma.Web.ActivityPub.MRF.subdomains_regex()
|> Pleroma.Web.ActivityPub.MRF.subdomain_match?(host) |> Pleroma.Web.ActivityPub.MRF.subdomain_match?(host)
else else
# oi!
{:nil, true} ->
false
_ -> _ ->
quarantined_instances = quarantined_instances =
blocked_instances() blocked_instances()

View file

@ -487,4 +487,11 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do
) )
end end
end end
describe "should_federate/1" do
test "should not obliterate itself if the inbox URL is bad" do
url = "/inbox"
refute Pleroma.Web.ActivityPub.Publisher.should_federate?(url)
end
end
end end