[tor-commits] [tor/master] Bitmask out the compression methods that we do not support

nickm at torproject.org nickm at torproject.org
Thu Apr 27 15:34:37 UTC 2017


commit 65ff0f8267b99a55a099eec2a71cb45557ae84eb
Author: Nick Mathewson <nickm at torproject.org>
Date:   Tue Apr 25 19:07:17 2017 -0400

    Bitmask out the compression methods that we do not support
---
 src/or/directory.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/or/directory.c b/src/or/directory.c
index 95c3c84..ea3410d 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -2814,6 +2814,20 @@ parse_accept_encoding_header(const char *h)
   return result;
 }
 
+/** Bitmask of supported compression types, to use in a bitwise "and"
+ * with the results of parse_accept_encoding_header */
+static const unsigned SUPPORTED_COMPRESSION_MASK =
+    (1u << NO_METHOD)
+  | (1u << ZLIB_METHOD)
+  | (1u << GZIP_METHOD)
+#ifdef HAVE_ZSTD
+  | (1u << ZSTD_METHOD)
+#endif
+#ifdef HAVE_LZMA
+  | (1u << LZMA_METHOD)
+#endif
+  ;
+
 /** Decide whether a client would accept the consensus we have.
  *
  * Clients can say they only want a consensus if it's signed by more
@@ -3013,6 +3027,9 @@ directory_handle_command_get,(dir_connection_t *conn, const char *headers,
       compression_methods_supported |= (1u << ZLIB_METHOD);
   }
 
+  /* Remove all methods that we don't both support. */
+  compression_methods_supported &= SUPPORTED_COMPRESSION_MASK;
+
   get_handler_args_t args;
   args.url = url;
   args.headers = headers;





More information about the tor-commits mailing list