static const char *
lzma_error_str(lzma_ret error)
{
+ // LCOV_EXCL_START
switch (error) {
case LZMA_OK:
return "Operation completed successfully";
default:
return "Unknown LZMA error";
}
+ // LCOV_EXCL_STOP
}
#endif // HAVE_LZMA.
memory_usage = lzma_easy_decoder_memusage(memory_level(level));
if (memory_usage == UINT64_MAX) {
+ // LCOV_EXCL_START
log_warn(LD_GENERAL, "Unsupported compression level passed to LZMA %s",
compress ? "encoder" : "decoder");
goto err;
+ // LCOV_EXCL_STOP
}
if (memory_usage + sizeof(tor_lzma_compress_state_t) > SIZE_MAX)
return (size_t)memory_usage;
err:
- return 0;
+ return 0; // LCOV_EXCL_LINE
}
#endif // HAVE_LZMA.
retval = lzma_alone_encoder(&result->stream, &stream_options);
if (retval != LZMA_OK) {
+ // LCOV_EXCL_START
log_warn(LD_GENERAL, "Error from LZMA encoder: %s (%u).",
lzma_error_str(retval), retval);
goto err;
+ // LCOV_EXCL_STOP
}
} else {
retval = lzma_alone_decoder(&result->stream, MEMORY_LIMIT);
if (retval != LZMA_OK) {
+ // LCOV_EXCL_START
log_warn(LD_GENERAL, "Error from LZMA decoder: %s (%u).",
lzma_error_str(retval), retval);
goto err;
+ // LCOV_EXCL_STOP
}
}
return result;
err:
- tor_free(result);
+ tor_free(result); // LCOV_EXCL_LINE
return NULL;
#else // HAVE_LZMA.
(void)compress;
case LZMA_DATA_ERROR:
case LZMA_PROG_ERROR:
default:
+ // LCOV_EXCL_START
log_warn(LD_GENERAL, "LZMA %s didn't finish: %s.",
state->compress ? "compression" : "decompression",
lzma_error_str(retval));
return TOR_COMPRESS_ERROR;
+ // LCOV_EXCL_STOP
}
#else // HAVE_LZMA.
(void)state;
result->u.compress_stream = ZSTD_createCStream();
if (result->u.compress_stream == NULL) {
+ // LCOV_EXCL_START
log_warn(LD_GENERAL, "Error while creating Zstandard stream");
goto err;
+ // LCOV_EXCL_STOP
}
retval = ZSTD_initCStream(result->u.compress_stream, preset);
if (ZSTD_isError(retval)) {
+ // LCOV_EXCL_START
log_warn(LD_GENERAL, "Zstandard stream initialization error: %s",
ZSTD_getErrorName(retval));
goto err;
+ // LCOV_EXCL_STOP
}
} else {
result->u.decompress_stream = ZSTD_createDStream();
if (result->u.decompress_stream == NULL) {
+ // LCOV_EXCL_START
log_warn(LD_GENERAL, "Error while creating Zstandard stream");
goto err;
+ // LCOV_EXCL_STOP
}
retval = ZSTD_initDStream(result->u.decompress_stream);
if (ZSTD_isError(retval)) {
+ // LCOV_EXCL_START
log_warn(LD_GENERAL, "Zstandard stream initialization error: %s",
ZSTD_getErrorName(retval));
goto err;
+ // LCOV_EXCL_STOP
}
}
return result;
err:
+ // LCOV_EXCL_START
if (compress) {
ZSTD_freeCStream(result->u.compress_stream);
} else {
tor_free(result);
return NULL;
+ // LCOV_EXCL_STOP
#else // HAVE_ZSTD.
(void)compress;
(void)method;
}
if (ZSTD_isError(retval)) {
+ // LCOV_EXCL_START
log_warn(LD_GENERAL, "Zstandard %s didn't finish: %s.",
state->compress ? "compression" : "decompression",
ZSTD_getErrorName(retval));
return TOR_COMPRESS_ERROR;
+ // LCOV_EXCL_STOP
}
if (state->compress && !finish) {
*out_len = output.size - output.pos;
if (ZSTD_isError(retval)) {
+ // LCOV_EXCL_START
log_warn(LD_GENERAL, "Zstandard compression unable to flush: %s.",
ZSTD_getErrorName(retval));
return TOR_COMPRESS_ERROR;
+ // LCOV_EXCL_STOP
}
if (retval > 0)
*out_len = output.size - output.pos;
if (ZSTD_isError(retval)) {
+ // LCOV_EXCL_START
log_warn(LD_GENERAL, "Zstandard compression unable to write "
"epilogue: %s.",
ZSTD_getErrorName(retval));
return TOR_COMPRESS_ERROR;
+ // LCOV_EXCL_STOP
}
// endStream returns the number of bytes that is needed to write the