diff options
author | Alexander Færøy <ahf@torproject.org> | 2017-04-20 16:37:39 +0200 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-04-25 08:10:10 -0400 |
commit | 69a41e8bc6e148c471ae8ee860e1a43548729db0 (patch) | |
tree | cd86685ba71902f0309f0192a5a4ed499ac32cbc /src/common | |
parent | c2d1d949dec1db9fb413a02be422dfede3bb53aa (diff) | |
download | tor-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.c | 64 |
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 |