diff options
author | Yann Collet <yann.collet.73@gmail.com> | 2023-02-26 18:23:05 (GMT) |
---|---|---|
committer | Yann Collet <yann.collet.73@gmail.com> | 2023-02-26 18:40:28 (GMT) |
commit | 45a4880b9cbb47ddc6c1758744629b5835d5dd19 (patch) | |
tree | c9ae72bd0d6a6864f061db33cab3848c92337600 /programs/lz4io.c | |
parent | ecf92d0897587c0f641df9db83c910fd236cb18a (diff) | |
download | lz4-45a4880b9cbb47ddc6c1758744629b5835d5dd19.zip lz4-45a4880b9cbb47ddc6c1758744629b5835d5dd19.tar.gz lz4-45a4880b9cbb47ddc6c1758744629b5835d5dd19.tar.bz2 |
refuse to compress directories
fix #1211, reported by @imba-tjd
Diffstat (limited to 'programs/lz4io.c')
-rw-r--r-- | programs/lz4io.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/programs/lz4io.c b/programs/lz4io.c index 8b70b91..09d906e 100644 --- a/programs/lz4io.c +++ b/programs/lz4io.c @@ -325,11 +325,16 @@ static FILE* LZ4IO_openSrcFile(const char* srcFileName) DISPLAYLEVEL(4,"Using stdin for input \n"); f = stdin; SET_BINARY_MODE(stdin); - } else { - f = fopen(srcFileName, "rb"); - if (f==NULL) DISPLAYLEVEL(1, "%s: %s \n", srcFileName, strerror(errno)); + return f; + } + + if (UTIL_isDir(srcFileName)) { + DISPLAYLEVEL(1, "lz4: %s is a directory -- ignored \n", srcFileName); + return NULL; } + f = fopen(srcFileName, "rb"); + if (f==NULL) DISPLAYLEVEL(1, "%s: %s \n", srcFileName, strerror(errno)); return f; } @@ -337,7 +342,8 @@ static FILE* LZ4IO_openSrcFile(const char* srcFileName) * prefs is writable, because sparseFileSupport might be updated. * condition : `dstFileName` must be non-NULL. * @result : FILE* to `dstFileName`, or NULL if it fails */ -static FILE* LZ4IO_openDstFile(const char* dstFileName, const LZ4IO_prefs_t* const prefs) +static FILE* +LZ4IO_openDstFile(const char* dstFileName, const LZ4IO_prefs_t* const prefs) { FILE* f; assert(dstFileName != NULL); @@ -563,11 +569,14 @@ static void* LZ4IO_createDict(size_t* dictSize, const char* const dictFilename) char* dictBuf; FILE* dictFile; - if (!circularBuf) END_PROCESS(25, "Allocation error : not enough memory for circular buffer"); - if (!dictFilename) END_PROCESS(26, "Dictionary error : no filename provided"); + if (!dictFilename) + END_PROCESS(26, "Dictionary error : no filename provided"); + if (!circularBuf) + END_PROCESS(25, "Allocation error : not enough memory for circular buffer"); dictFile = LZ4IO_openSrcFile(dictFilename); - if (!dictFile) END_PROCESS(27, "Dictionary error : could not open dictionary file"); + if (!dictFile) + END_PROCESS(27, "Dictionary error : could not open dictionary file"); /* opportunistically seek to the part of the file we care about. * If this fails it's not a problem since we'll just read everything anyways. */ @@ -1311,7 +1320,8 @@ LZ4IO_decompressSrcFile(dRess_t ress, static int LZ4IO_decompressDstFile(dRess_t ress, - const char* input_filename, const char* output_filename, + const char* input_filename, + const char* output_filename, const LZ4IO_prefs_t* const prefs) { int result; |