Add API entry-point for getting compression method version numbers.

This patch adds `tor_compress_version_str()` and
`tor_compress_header_version_str()` to get the version strings of the
different compression schema providers. Both functions returns `NULL` in
case a given `compress_method_t` is unknown or unsupported.

See: https://bugs.torproject.org/21662
This commit is contained in:
Alexander Færøy 2017-04-20 16:20:14 +02:00 committed by Nick Mathewson
parent 1c77d8690c
commit 6b905b38bb
4 changed files with 57 additions and 9 deletions

View File

@ -173,6 +173,48 @@ tor_compress_supports_method(compress_method_t method)
}
}
/** Return a string representation of the version of the library providing the
* compression method given in <b>method</b>. Returns NULL if <b>method</b> is
* unknown or unsupported. */
const char *
tor_compress_version_str(compress_method_t method)
{
switch (method) {
case GZIP_METHOD:
case ZLIB_METHOD:
return tor_zlib_get_version_str();
case LZMA_METHOD:
return tor_lzma_get_version_str();
case ZSTD_METHOD:
return tor_zstd_get_version_str();
case NO_METHOD:
case UNKNOWN_METHOD:
default:
return NULL;
}
}
/** Return a string representation of the version of the library, found at
* compile time, providing the compression method given in <b>method</b>.
* Returns NULL if <b>method</b> is unknown or unsupported. */
const char *
tor_compress_header_version_str(compress_method_t method)
{
switch (method) {
case GZIP_METHOD:
case ZLIB_METHOD:
return tor_zlib_get_header_version_str();
case LZMA_METHOD:
return tor_lzma_get_header_version_str();
case ZSTD_METHOD:
return tor_zstd_get_header_version_str();
case NO_METHOD:
case UNKNOWN_METHOD:
default:
return NULL;
}
}
/** Return the approximate number of bytes allocated for all
* supported compression schemas. */
size_t

View File

@ -55,6 +55,12 @@ tor_compress_is_compression_bomb(size_t size_in, size_t size_out);
int
tor_compress_supports_method(compress_method_t method);
const char *
tor_compress_version_str(compress_method_t method);
const char *
tor_compress_header_version_str(compress_method_t method);
size_t
tor_compress_get_total_allocation(void);

View File

@ -73,26 +73,26 @@ tor_lzma_method_supported(void)
}
/** Return a string representation of the version of the currently running
* version of liblzma. */
* version of liblzma. Returns NULL if LZMA is unsupported. */
const char *
tor_lzma_get_version_str(void)
{
#ifdef HAVE_LZMA
return lzma_version_string();
#else
return "N/A";
return NULL;
#endif
}
/** Return a string representation of the version of the version of liblzma
* used at compilation. */
/** Return a string representation of the version of liblzma used at
* compilation time. Returns NULL if LZMA is unsupported. */
const char *
tor_lzma_get_header_version_str(void)
{
#ifdef HAVE_LZMA
return LZMA_VERSION_STRING;
#else
return "N/A";
return NULL;
#endif
}

View File

@ -38,7 +38,7 @@ tor_zstd_method_supported(void)
}
/** Return a string representation of the version of the currently running
* version of libzstd. */
* version of libzstd. Returns NULL if Zstandard is unsupported. */
const char *
tor_zstd_get_version_str(void)
{
@ -55,19 +55,19 @@ tor_zstd_get_version_str(void)
return version_str;
#else
return "N/A";
return NULL;
#endif
}
/** Return a string representation of the version of the version of libzstd
* used at compilation. */
* used at compilation time. Returns NULL if Zstandard is unsupported. */
const char *
tor_zstd_get_header_version_str(void)
{
#ifdef HAVE_ZSTD
return ZSTD_VERSION_STRING;
#else
return "N/A";
return NULL;
#endif
}