forked from GNUsocial/gnu-social
If our host matched in File lookup, it could throw exceptions on Router->map
This commit is contained in:
parent
d179afa303
commit
a24c6fdb39
@ -113,17 +113,30 @@ class File extends Managed_DataObject
|
|||||||
if (isset($u['host']) && $u['host'] === common_config('site', 'server')) {
|
if (isset($u['host']) && $u['host'] === common_config('site', 'server')) {
|
||||||
$r = Router::get();
|
$r = Router::get();
|
||||||
// Skip the / in the beginning or $r->map won't match
|
// Skip the / in the beginning or $r->map won't match
|
||||||
$args = $r->map(mb_substr($u['path'], 1));
|
try {
|
||||||
if ($args['action'] === 'attachment') {
|
$args = $r->map(mb_substr($u['path'], 1));
|
||||||
try {
|
if ($args['action'] === 'attachment') {
|
||||||
// $args['attachment'] should always be set if action===attachment, given our routing rules
|
try {
|
||||||
$file = File::getByID($args['attachment']);
|
// $args['attachment'] should always be set if action===attachment, given our routing rules
|
||||||
return $file;
|
$file = File::getByID($args['attachment']);
|
||||||
} catch (EmptyIdException $e) {
|
return $file;
|
||||||
// ...but $args['attachment'] can also be 0...
|
} catch (EmptyIdException $e) {
|
||||||
} catch (NoResultException $e) {
|
// ...but $args['attachment'] can also be 0...
|
||||||
// apparently this link goes to us, but is _not_ an existing attachment (File) ID?
|
} catch (NoResultException $e) {
|
||||||
|
// apparently this link goes to us, but is _not_ an existing attachment (File) ID?
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
|
// Some other exception was thrown from $r->map, likely a
|
||||||
|
// ClientException (404) because of some malformed link to
|
||||||
|
// our own instance. It's still a valid URL however, so we
|
||||||
|
// won't abort anything... I noticed this when linking:
|
||||||
|
// https://social.umeahackerspace.se/mmn/foaf' (notice the
|
||||||
|
// apostrophe in the end, making it unrecognizable for our
|
||||||
|
// URL routing.
|
||||||
|
// That specific issue (the apostrophe being part of a link
|
||||||
|
// is something that may or may not have been fixed since,
|
||||||
|
// in lib/util.php in common_replace_urls_callback().
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user