From 82817fee459c0cf981eaf283324616b26f3ae9a2 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Fri, 22 May 2020 19:19:52 +0200 Subject: [PATCH] package: prevent creating a package that contains itself. Fixes #10117. Change-Id: I4be59189a47dd0ad400fe46786d7058be4ed6d3f Reviewed-on: https://review.haiku-os.org/c/haiku/+/2778 Reviewed-by: waddlesplash --- src/bin/package/command_create.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/bin/package/command_create.cpp b/src/bin/package/command_create.cpp index b397201f06..b0294c4e03 100644 --- a/src/bin/package/command_create.cpp +++ b/src/bin/package/command_create.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include @@ -120,6 +121,18 @@ command_create(int argc, const char* const* argv) return 1; } + BPath outputPath(packageFileName, NULL, true); + BPath inputPath(changeToDirectory, NULL, true); + BPath parent; + while (outputPath.GetParent(&parent) == B_OK) { + if (outputPath == inputPath) { + fprintf(stderr, "Error: output package can't be in the same " + "directory as input files."); + return 1; + } + outputPath = parent; + } + // create package BPackageWriterParameters writerParameters; writerParameters.SetCompressionLevel(compressionLevel);