From 37e4d57cdf4ad7fdd3d42aa8819694183007f225 Mon Sep 17 00:00:00 2001 From: DaneEveritt Date: Thu, 12 May 2022 18:00:55 -0400 Subject: [PATCH] Don't include files and folders with identical name prefixes when archiving; closes pterodactyl/panel#3946 --- CHANGELOG.md | 1 + server/filesystem/archive.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b5f6f2..92ec6cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Fixed * Fixes file upload size not being properly enforced. * Fixes a bug that prevented listing a directory when it contained a named pipe. Also added a check to prevent attempting to read a named pipe directly. +* Fixes a bug with the archiver logic that would include folders that had the same name prefix. (for example, requesting only `map` would also include `map2` and `map3`) ### Changed * CPU limit fields are only set on the Docker container if they have been specified for the server — otherwise they are left empty. diff --git a/server/filesystem/archive.go b/server/filesystem/archive.go index b5fec63..ee6f3d6 100644 --- a/server/filesystem/archive.go +++ b/server/filesystem/archive.go @@ -130,7 +130,7 @@ func (a *Archive) withFilesCallback(tw *tar.Writer) func(path string, de *godirw for _, f := range a.Files { // If the given doesn't match, or doesn't have the same prefix continue // to the next item in the loop. - if p != f && !strings.HasPrefix(p, f) { + if p != f && !strings.HasPrefix(strings.TrimSuffix(p, "/")+"/", f) { continue }