commit e6c6606a17841eaf263967254990db5e9443942d
Author: Alexander Færøy <ahf(a)torproject.org>
Date: Tue Apr 18 03:12:19 2017 +0200
Expose `tor_compress_is_compression_bomb()` as part of the public compression API.
This patch exposes the old `is_compression_bomb()` function as a public
API as part of the compression module.
See https://bugs.torproject.org/21663
---
src/common/torgzip.c | 8 ++++----
src/common/torgzip.h | 3 +++
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/common/torgzip.c b/src/common/torgzip.c
index 09f3806..d6f6225 100644
--- a/src/common/torgzip.c
+++ b/src/common/torgzip.c
@@ -105,10 +105,10 @@ method_bits(compress_method_t method, compression_level_t level)
#define CHECK_FOR_COMPRESSION_BOMB_AFTER (1024*64)
/** @} */
-/** Return true if uncompressing an input of size <b>in_size</b> to an input
- * of size at least <b>size_out</b> looks like a compression bomb. */
-static int
-is_compression_bomb(size_t size_in, size_t size_out)
+/** Return true if uncompressing an input of size <b>in_size</b> to an input of
+ * size at least <b>size_out</b> looks like a compression bomb. */
+int
+tor_compress_is_compression_bomb(size_t size_in, size_t size_out)
{
if (size_in == 0 || size_out < CHECK_FOR_COMPRESSION_BOMB_AFTER)
return 0;
diff --git a/src/common/torgzip.h b/src/common/torgzip.h
index 8f2363a..fa56628 100644
--- a/src/common/torgzip.h
+++ b/src/common/torgzip.h
@@ -49,6 +49,9 @@ compress_method_t detect_compression_method(const char *in, size_t in_len);
int
tor_compress_memory_level(compression_level_t level);
+int
+tor_compress_is_compression_bomb(size_t size_in, size_t size_out);
+
/** Return values from tor_compress_process; see that function's documentation
* for details. */
typedef enum {
commit 6b5172bcf2018f858d38f5dea13753b8238b15ae
Author: Alexander Færøy <ahf(a)torproject.org>
Date: Tue Apr 18 02:23:25 2017 +0200
Expose `tor_compress_memory_level()` as a public function in the compression module.
This patch makes the internal `get_memlevel()` a part of the public
compression API as `tor_compress_memory_level()`.
See https://bugs.torproject.org/21663
---
src/common/torgzip.c | 24 ++++++++++++++----------
src/common/torgzip.h | 3 +++
2 files changed, 17 insertions(+), 10 deletions(-)
diff --git a/src/common/torgzip.c b/src/common/torgzip.c
index af4bbc5..09f3806 100644
--- a/src/common/torgzip.c
+++ b/src/common/torgzip.c
@@ -86,16 +86,6 @@ method_bits(compress_method_t method, compression_level_t level)
}
}
-static inline int
-get_memlevel(compression_level_t level)
-{
- switch (level) {
- default:
- case HIGH_COMPRESSION: return 8;
- case MEDIUM_COMPRESSION: return 7;
- case LOW_COMPRESSION: return 6;
- }
-}
/** @{ */
/* These macros define the maximum allowable compression factor. Anything of
@@ -126,6 +116,20 @@ is_compression_bomb(size_t size_in, size_t size_out)
return (size_out / size_in > MAX_UNCOMPRESSION_FACTOR);
}
+/** Given <b>level</b> return the memory level. The memory level is needed for
+ * the various compression backends used in Tor.
+ */
+int
+tor_compress_memory_level(compression_level_t level)
+{
+ switch (level) {
+ default:
+ case HIGH_COMPRESSION: return 8;
+ case MEDIUM_COMPRESSION: return 7;
+ case LOW_COMPRESSION: return 6;
+ }
+}
+
/** Given <b>in_len</b> bytes at <b>in</b>, compress them into a newly
* allocated buffer, using the method described in <b>method</b>. Store the
* compressed string in *<b>out</b>, and its length in *<b>out_len</b>.
diff --git a/src/common/torgzip.h b/src/common/torgzip.h
index 2b0504e..8f2363a 100644
--- a/src/common/torgzip.h
+++ b/src/common/torgzip.h
@@ -46,6 +46,9 @@ tor_zlib_get_header_version_str(void);
compress_method_t detect_compression_method(const char *in, size_t in_len);
+int
+tor_compress_memory_level(compression_level_t level);
+
/** Return values from tor_compress_process; see that function's documentation
* for details. */
typedef enum {