From: Yann Collet Date: Tue, 10 May 2016 03:56:09 +0000 (+0200) Subject: fixed : null-length string roundtrip X-Git-Tag: v0.6.1^2~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d69311711385adc8afcced0bbe7e1f28a3cc79f2;p=thirdparty%2Fzstd.git fixed : null-length string roundtrip --- diff --git a/programs/fileio.c b/programs/fileio.c index 4bb451b95..36b1ff297 100644 --- a/programs/fileio.c +++ b/programs/fileio.c @@ -535,10 +535,9 @@ unsigned long long FIO_decompressFrame(dRess_t ress, /* Complete Header loading */ { size_t const toLoad = ZSTD_frameHeaderSize_max - alreadyLoaded; /* assumption : alreadyLoaded <= ZSTD_frameHeaderSize_max */ - size_t const checkSize = fread(((char*)ress.srcBuffer) + alreadyLoaded, 1, toLoad, finput); - if (checkSize != toLoad) EXM_THROW(32, "Read error"); /* assumption : srcSize >= ZSTD_frameHeaderSize_max */ + size_t const loadedSize = fread(((char*)ress.srcBuffer) + alreadyLoaded, 1, toLoad, finput); /* can be <= toLoad (null string) */ + readSize = alreadyLoaded + loadedSize; } - readSize = ZSTD_frameHeaderSize_max; /* Main decompression Loop */ while (1) { diff --git a/programs/playTests.sh b/programs/playTests.sh index 63e818443..1c5f00a13 100755 --- a/programs/playTests.sh +++ b/programs/playTests.sh @@ -29,10 +29,11 @@ $ZSTD -f tmp # trivial compression case, creates tmp $ZSTD -df tmp.zst # trivial decompression case (overwrites tmp) echo "test : too large compression level (must fail)" $ZSTD -99 tmp && die "too large compression level undetected" -echo "test : compress null-length file" +echo "test : compress to stdout" +$ZSTD tmp -c > tmpCompressed +$ZSTD tmp --stdout > tmpCompressed # long command format +echo "test : null-length file roundtrip" echo -n '' | $ZSTD - --stdout | $ZSTD -d --stdout -$ZSTD tmp -c > tmpCompressed # compression using stdout -$ZSTD tmp --stdout > tmpCompressed # compressoin using stdout, long format echo "test : decompress file with wrong suffix (must fail)" $ZSTD -d tmpCompressed && die "wrong suffix error not detected!" $ZSTD -d tmpCompressed -c > tmpResult # decompression using stdout