From: Yann Collet Date: Thu, 26 Jan 2023 00:18:20 +0000 (-0800) Subject: enforce a hard fail when input files are set to be erased X-Git-Tag: v1.5.4^2~24^2 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F3450%2Fhead;p=thirdparty%2Fzstd.git enforce a hard fail when input files are set to be erased in scenarios where it's supposed to not be possible. suggested by @terrelln --- diff --git a/programs/fileio.c b/programs/fileio.c index abc90b659..fb71804d6 100644 --- a/programs/fileio.c +++ b/programs/fileio.c @@ -840,9 +840,21 @@ static void FIO_adjustMemLimitForPatchFromMode(FIO_prefs_t* const prefs, */ static int FIO_multiFilesConcatWarning(const FIO_ctx_t* fCtx, FIO_prefs_t* prefs, const char* outFileName, int displayLevelCutoff) { - if (fCtx->hasStdoutOutput) assert(prefs->removeSrcFile == 0); + if (fCtx->hasStdoutOutput) { + if (prefs->removeSrcFile) + /* this should not happen ; hard fail, to protect user's data + * note: this should rather be an assert(), but we want to be certain that user's data will not be wiped out in case it nonetheless happen */ + EXM_THROW(43, "It's not allowed to remove input files when processed output is piped to stdout. " + "This scenario is not supposed to be possible. " + "This is a programming error. File an issue for it to be fixed."); + } if (prefs->testMode) { - assert(prefs->removeSrcFile == 0); + if (prefs->removeSrcFile) + /* this should not happen ; hard fail, to protect user's data + * note: this should rather be an assert(), but we want to be certain that user's data will not be wiped out in case it nonetheless happen */ + EXM_THROW(43, "Test mode shall not remove input files! " + "This scenario is not supposed to be possible. " + "This is a programming error. File an issue for it to be fixed."); return 0; }