]> git.mxchange.org Git - friendica.git/commitdiff
Don't try to follow remote item from non-URI or scheme-less URI
authorHypolite Petovan <hypolite@mrpetovan.com>
Sun, 26 Mar 2023 22:46:16 +0000 (18:46 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Tue, 28 Mar 2023 01:31:54 +0000 (21:31 -0400)
- Address https://github.com/friendica/friendica/issues/12486#issuecomment-1407679388
- Address https://github.com/friendica/friendica/issues/12486#issuecomment-1433112562

src/Module/Contact/Follow.php

index 57e9ff634ab148efe12de562283a934230d43c0b..0199aca78f46f455c85f6cc8506e74177428b018 100644 (file)
@@ -40,6 +40,7 @@ use Friendica\Network\HTTPException\ForbiddenException;
 use Friendica\Network\Probe;
 use Friendica\Util\Profiler;
 use Friendica\Util\Strings;
+use GuzzleHttp\Psr7\Uri;
 use Psr\Log\LoggerInterface;
 
 class Follow extends BaseModule
@@ -223,17 +224,26 @@ class Follow extends BaseModule
 
        protected function followRemoteItem(string $url)
        {
-               $itemId = Item::fetchByLink($url, $this->session->getLocalUserId());
-               if (!$itemId) {
-                       // If the user-specific search failed, we search and probe a public post
-                       $itemId = Item::fetchByLink($url);
-               }
+               try {
+                       $uri = new Uri($url);
+                       if (!$uri->getScheme()) {
+                               return;
+                       }
+
+                       $itemId = Item::fetchByLink($url, $this->session->getLocalUserId());
+                       if (!$itemId) {
+                               // If the user-specific search failed, we search and probe a public post
+                               $itemId = Item::fetchByLink($url);
+                       }
 
-               if (!empty($itemId)) {
-                       $item = Post::selectFirst(['guid'], ['id' => $itemId]);
-                       if (!empty($item['guid'])) {
-                               $this->baseUrl->redirect('display/' . $item['guid']);
+                       if (!empty($itemId)) {
+                               $item = Post::selectFirst(['guid'], ['id' => $itemId]);
+                               if (!empty($item['guid'])) {
+                                       $this->baseUrl->redirect('display/' . $item['guid']);
+                               }
                        }
+               } catch (\InvalidArgumentException $e) {
+                       return;
                }
        }
 }