From 5fe2d9012616eb58b0293e8baf0b6caf892559b8 Mon Sep 17 00:00:00 2001 From: Yuhang Cao Date: Sun, 14 Jun 2026 06:03:41 +0000 Subject: [PATCH] Fix tar type detection for hidden archives Signed-off-by: Yuhang Cao --- lib/private/Archive/TAR.php | 2 +- tests/lib/Archive/TARTest.php | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/private/Archive/TAR.php b/lib/private/Archive/TAR.php index b5cfd43304afa..6e3ddfbf580ea 100644 --- a/lib/private/Archive/TAR.php +++ b/lib/private/Archive/TAR.php @@ -40,7 +40,7 @@ public function __construct( * try to detect the type of tar compression */ public static function getTarType(string $file): int { - if (strpos($file, '.')) { + if (strrpos($file, '.') !== false) { $extension = substr($file, strrpos($file, '.')); switch ($extension) { case '.gz': diff --git a/tests/lib/Archive/TARTest.php b/tests/lib/Archive/TARTest.php index 02ef5992fe51a..4ef6977da08ca 100644 --- a/tests/lib/Archive/TARTest.php +++ b/tests/lib/Archive/TARTest.php @@ -13,6 +13,12 @@ use OCP\Server; class TARTest extends TestBase { + public function testGetTarTypeWithHiddenArchiveNames(): void { + $this->assertSame(TAR::GZIP, TAR::getTarType('.tar.gz')); + $this->assertSame(TAR::GZIP, TAR::getTarType('.tgz')); + $this->assertSame(TAR::BZIP, TAR::getTarType('.tar.bz2')); + } + #[\Override] protected function getExisting() { $dir = \OC::$SERVERROOT . '/tests/data';