fix: Handle when required `resource` parameter is missing or empty

Signed-off-by: Josh <josh.t.richards@gmail.com>
pull/1951/head
Josh 2024-11-21 14:08:56 -05:00 zatwierdzone przez GitHub
rodzic c78d7d5122
commit af1444ec63
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
1 zmienionych plików z 11 dodań i 2 usunięć

Wyświetl plik

@ -97,6 +97,12 @@ class WebfingerHandler implements IHandler {
*/
public function handleWebfinger(IRequestContext $context, ?IResponse $previousResponse): ?IResponse {
$subject = $this->getSubjectFromRequest($context->getHttpRequest());
// the `resource` parameter is required
if ($subject === null || $subject === '') {
return new JrdResponse('', Http::STATUS_BAD_REQUEST);
}
if (str_starts_with($subject, 'acct:')) {
$subject = substr($subject, 5);
}
@ -216,8 +222,11 @@ class WebfingerHandler implements IHandler {
// work around to extract resource:
// on some setup (i.e. tests) the data are not available from IRequest
parse_str(parse_url($request->getRequestUri(), PHP_URL_QUERY), $query);
$requestUri = $request->getRequestUri();
if ($requestUri !== '') {
parse_str(parse_url($requestUri, PHP_URL_QUERY), $query);
}
return $query['resource'] ?? '';
}
}