Fix building without Libbsc support.
Add more tests for corrupted encrypted files.
This commit is contained in:
parent
deecbadac4
commit
33c727e6e7
2 changed files with 64 additions and 3 deletions
|
@ -129,14 +129,17 @@ adapt2_init(void **data, int *level, int nthreads, ssize_t chunksize,
|
||||||
adat = (struct adapt_data *)slab_alloc(NULL, sizeof (struct adapt_data));
|
adat = (struct adapt_data *)slab_alloc(NULL, sizeof (struct adapt_data));
|
||||||
adat->adapt_mode = 2;
|
adat->adapt_mode = 2;
|
||||||
adat->ppmd_data = NULL;
|
adat->ppmd_data = NULL;
|
||||||
|
adat->bsc_data = NULL;
|
||||||
lv = *level;
|
lv = *level;
|
||||||
rv = ppmd_init(&(adat->ppmd_data), &lv, nthreads, chunksize, file_version, op);
|
rv = ppmd_init(&(adat->ppmd_data), &lv, nthreads, chunksize, file_version, op);
|
||||||
lv = *level;
|
lv = *level;
|
||||||
if (rv == 0)
|
if (rv == 0)
|
||||||
rv = lzma_init(&(adat->lzma_data), &lv, nthreads, chunksize, file_version, op);
|
rv = lzma_init(&(adat->lzma_data), &lv, nthreads, chunksize, file_version, op);
|
||||||
lv = *level;
|
lv = *level;
|
||||||
|
#ifdef ENABLE_PC_LIBBSC
|
||||||
if (rv == 0)
|
if (rv == 0)
|
||||||
rv = libbsc_init(&(adat->bsc_data), &lv, nthreads, chunksize, file_version, op);
|
rv = libbsc_init(&(adat->bsc_data), &lv, nthreads, chunksize, file_version, op);
|
||||||
|
#endif
|
||||||
*data = adat;
|
*data = adat;
|
||||||
if (*level > 9) *level = 9;
|
if (*level > 9) *level = 9;
|
||||||
}
|
}
|
||||||
|
@ -203,11 +206,13 @@ adapt_compress(void *src, size_t srclen, void *dst,
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (adat->bsc_data && tagcnt > ONE_PCT(srclen)) {
|
if (adat->bsc_data && tagcnt > ONE_PCT(srclen)) {
|
||||||
|
#ifdef ENABLE_PC_LIBBSC
|
||||||
rv = libbsc_compress(src, srclen, dst, dstlen, level, chdr, adat->bsc_data);
|
rv = libbsc_compress(src, srclen, dst, dstlen, level, chdr, adat->bsc_data);
|
||||||
if (rv < 0)
|
if (rv < 0)
|
||||||
return (rv);
|
return (rv);
|
||||||
rv = COMPRESS_BSC;
|
rv = COMPRESS_BSC;
|
||||||
bsc_count++;
|
bsc_count++;
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
rv = ppmd_compress(src, srclen, dst, dstlen, level, chdr, adat->ppmd_data);
|
rv = ppmd_compress(src, srclen, dst, dstlen, level, chdr, adat->ppmd_data);
|
||||||
if (rv < 0)
|
if (rv < 0)
|
||||||
|
@ -239,7 +244,12 @@ adapt_decompress(void *src, size_t srclen, void *dst,
|
||||||
return (ppmd_decompress(src, srclen, dst, dstlen, level, chdr, adat->ppmd_data));
|
return (ppmd_decompress(src, srclen, dst, dstlen, level, chdr, adat->ppmd_data));
|
||||||
|
|
||||||
} else if (cmp_flags == COMPRESS_BSC) {
|
} else if (cmp_flags == COMPRESS_BSC) {
|
||||||
|
#ifdef ENABLE_PC_LIBBSC
|
||||||
return (libbsc_decompress(src, srclen, dst, dstlen, level, chdr, adat->bsc_data));
|
return (libbsc_decompress(src, srclen, dst, dstlen, level, chdr, adat->bsc_data));
|
||||||
|
#else
|
||||||
|
fprintf(stderr, "Cannot decompress chunk. Libbsc support not present.\n");
|
||||||
|
return (-1);
|
||||||
|
#endif
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "Unrecognized compression mode: %d, file corrupt.\n", cmp_flags);
|
fprintf(stderr, "Unrecognized compression mode: %d, file corrupt.\n", cmp_flags);
|
||||||
|
|
57
test/t9.tst
57
test/t9.tst
|
@ -1,9 +1,9 @@
|
||||||
#
|
#
|
||||||
# Out of range parameters
|
# Out of range parameters
|
||||||
#
|
#
|
||||||
echo "#################################################"
|
echo "####################################################"
|
||||||
echo "# Test out of range parameters"
|
echo "# Test out of range parameters and error conditions."
|
||||||
echo "#################################################"
|
echo "####################################################"
|
||||||
|
|
||||||
for feat in "-L" "-L -D" "-L -D -E" "-L -B5" "-L -D -E -B2" "-F" "-F -L"
|
for feat in "-L" "-L -D" "-L -D -E" "-L -B5" "-L -D -E -B2" "-F" "-F -L"
|
||||||
do
|
do
|
||||||
|
@ -102,11 +102,62 @@ do
|
||||||
rm -f combined.dat.1.pz
|
rm -f combined.dat.1.pz
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -f combined.dat.1 combined.dat.1.pz combined.dat.pz
|
||||||
|
echo "plainpass" > /tmp/pwf
|
||||||
|
cmd="../../pcompress -c zlib -l3 -s1m -e -w /tmp/pwf $feat combined.dat"
|
||||||
|
echo "Running $cmd"
|
||||||
|
eval $cmd
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
echo "${cmd} errored."
|
||||||
|
rm -f combined.dat.pz
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
pw=`cat /tmp/pwf`
|
||||||
|
if [ "$pw" = "plainpasswd" ]
|
||||||
|
then
|
||||||
|
echo "ERROR: Password file was not zeroed"
|
||||||
|
rm -f /tmp/pwf combined.dat.pz
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cp combined.dat.pz combined.dat.1.pz
|
||||||
|
echo "Corrupting file ..."
|
||||||
|
dd if=/dev/urandom conv=notrunc of=combined.dat.pz bs=4 seek=115 count=1
|
||||||
|
echo "plainpass" > /tmp/pwf
|
||||||
|
cmd="../../pcompress -d -w /tmp/pwf combined.dat.pz combined.dat.1"
|
||||||
|
eval $cmd
|
||||||
|
if [ $? -eq 0 ]
|
||||||
|
then
|
||||||
|
echo "${cmd} DID NOT ERROR where expected."
|
||||||
|
rm -f combined.dat.pz
|
||||||
|
rm -f combined.dat.1
|
||||||
|
rm -f combined.dat.1.pz
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cp combined.dat.1.pz combined.dat.pz
|
||||||
|
rm -f combined.dat.1
|
||||||
|
echo "Corrupting file header ..."
|
||||||
|
dd if=/dev/urandom conv=notrunc of=combined.dat.pz bs=4 seek=10 count=1
|
||||||
|
echo "plainpass" > /tmp/pwf
|
||||||
|
cmd="../../pcompress -d -w /tmp/pwf combined.dat.pz combined.dat.1"
|
||||||
|
eval $cmd
|
||||||
|
if [ $? -eq 0 ]
|
||||||
|
then
|
||||||
|
echo "${cmd} DID NOT ERROR where expected."
|
||||||
|
rm -f combined.dat.pz
|
||||||
|
rm -f combined.dat.1
|
||||||
|
rm -f combined.dat.1.pz
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
rm -f combined.dat.1.pz
|
rm -f combined.dat.1.pz
|
||||||
rm -f combined.dat.pz
|
rm -f combined.dat.pz
|
||||||
rm -f combined.dat.1
|
rm -f combined.dat.1
|
||||||
|
rm -f /tmp/pwf
|
||||||
|
|
||||||
echo "#################################################"
|
echo "#################################################"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
Loading…
Reference in a new issue