]> git.mxchange.org Git - friendica.git/commitdiff
Ward against invalid URLs in Model\Post\Media::isFederatedServer
authorHypolite Petovan <hypolite@mrpetovan.com>
Sun, 26 Jan 2025 17:31:08 +0000 (12:31 -0500)
committerHypolite Petovan <hypolite@mrpetovan.com>
Sun, 26 Jan 2025 22:54:17 +0000 (17:54 -0500)
- Add logger call for exception case
- Address https://github.com/friendica/friendica/issues/14646#issuecomment-2614231345

src/Model/Post/Media.php

index 3cf0ce0e7d37042ffb4214560549e2cdee9d536a..ed36d219c3cd1d1011fa1f2a96606a3cbaacf6cc 100644 (file)
@@ -10,6 +10,7 @@ namespace Friendica\Model\Post;
 use Friendica\Content\PageInfo;
 use Friendica\Content\Text\BBCode;
 use Friendica\Core\Protocol;
+use Friendica\Core\System;
 use Friendica\Database\Database;
 use Friendica\Database\DBA;
 use Friendica\DI;
@@ -255,16 +256,21 @@ class Media
 
        private static function isFederatedServer(string $url): bool
        {
-               $baseurl = Network::getBaseUrl(new Uri($url));
-               if (empty($baseurl)) {
-                       return false;
-               }
+               try {
+                       $baseurl = Network::getBaseUrl(new Uri($url));
+                       if (empty($baseurl)) {
+                               return false;
+                       }
 
-               if (Strings::compareLink($baseurl, ATProtocol::WEB)) {
-                       return true;
-               }
+                       if (Strings::compareLink($baseurl, ATProtocol::WEB)) {
+                               return true;
+                       }
 
-               return DBA::exists('gserver', ['nurl' => Strings::normaliseLink($baseurl), 'network' => Protocol::FEDERATED]);
+                       return DBA::exists('gserver', ['nurl' => Strings::normaliseLink($baseurl), 'network' => Protocol::FEDERATED]);
+               } catch(\Throwable $e) {
+                       DI::logger()->notice('Invalid URL provided', ['url' => $url, 'exception' => $e, 'callstack' => System::callstack(10)]);
+                       return false;
+               }
        }
 
        private static function addPreviewData(array $media): array