aboutsummaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorAlexander Færøy <ahf@torproject.org>2017-04-20 16:37:39 +0200
committerNick Mathewson <nickm@torproject.org>2017-04-25 08:10:10 -0400
commit69a41e8bc6e148c471ae8ee860e1a43548729db0 (patch)
treecd86685ba71902f0309f0192a5a4ed499ac32cbc /src/common
parentc2d1d949dec1db9fb413a02be422dfede3bb53aa (diff)
downloadtor-69a41e8bc6e148c471ae8ee860e1a43548729db0.tar.gz
tor-69a41e8bc6e148c471ae8ee860e1a43548729db0.zip
Use switch-statement in tor_{compress,uncompress}.
Use a switch-statement in `tor_compress()` and `tor_uncompress()` for the given `compress_method_t` parameter. This allows us to have the compiler detect if we forgot add a handler in these functions for a newly added enumeration value. See: https://bugs.torproject.org/21662
Diffstat (limited to 'src/common')
-rw-r--r--src/common/compress.c64
1 files changed, 35 insertions, 29 deletions
diff --git a/src/common/compress.c b/src/common/compress.c
index e64bbca5d1..8b49af8220 100644
--- a/src/common/compress.c
+++ b/src/common/compress.c
@@ -80,16 +80,19 @@ tor_compress(char **out, size_t *out_len,
const char *in, size_t in_len,
compress_method_t method)
{
- if (method == GZIP_METHOD || method == ZLIB_METHOD)
- return tor_zlib_compress(out, out_len, in, in_len, method);
-
- if (method == LZMA_METHOD)
- return tor_lzma_compress(out, out_len, in, in_len, method);
-
- if (method == ZSTD_METHOD)
- return tor_zstd_compress(out, out_len, in, in_len, method);
-
- return -1;
+ switch (method) {
+ case GZIP_METHOD:
+ case ZLIB_METHOD:
+ return tor_zlib_compress(out, out_len, in, in_len, method);
+ case LZMA_METHOD:
+ return tor_lzma_compress(out, out_len, in, in_len, method);
+ case ZSTD_METHOD:
+ return tor_zstd_compress(out, out_len, in, in_len, method);
+ case NO_METHOD:
+ case UNKNOWN_METHOD:
+ default:
+ return -1;
+ }
}
/** Given zero or more zlib-compressed or gzip-compressed strings of
@@ -110,25 +113,28 @@ tor_uncompress(char **out, size_t *out_len,
int complete_only,
int protocol_warn_level)
{
- if (method == GZIP_METHOD || method == ZLIB_METHOD)
- return tor_zlib_uncompress(out, out_len, in, in_len,
- method,
- complete_only,
- protocol_warn_level);
-
- if (method == LZMA_METHOD)
- return tor_lzma_uncompress(out, out_len, in, in_len,
- method,
- complete_only,
- protocol_warn_level);
-
- if (method == ZSTD_METHOD)
- return tor_zstd_uncompress(out, out_len, in, in_len,
- method,
- complete_only,
- protocol_warn_level);
-
- return -1;
+ switch (method) {
+ case GZIP_METHOD:
+ case ZLIB_METHOD:
+ return tor_zlib_uncompress(out, out_len, in, in_len,
+ method,
+ complete_only,
+ protocol_warn_level);
+ case LZMA_METHOD:
+ return tor_lzma_uncompress(out, out_len, in, in_len,
+ method,
+ complete_only,
+ protocol_warn_level);
+ case ZSTD_METHOD:
+ return tor_zstd_uncompress(out, out_len, in, in_len,
+ method,
+ complete_only,
+ protocol_warn_level);
+ case NO_METHOD:
+ case UNKNOWN_METHOD:
+ default:
+ return -1;
+ }
}
/** Try to tell whether the <b>in_len</b>-byte string in <b>in</b> is likely