Explorar el Código

zlib: Turn UINT_MAX overrun into an error, not an assert.

Nick Mathewson hace 7 años
padre
commit
49a5b50b31
Se han modificado 1 ficheros con 5 adiciones y 2 borrados
  1. 5 2
      src/common/compress_zlib.c

+ 5 - 2
src/common/compress_zlib.c

@@ -213,8 +213,11 @@ tor_zlib_compress_process(tor_zlib_compress_state_t *state,
 {
   int err;
   tor_assert(state != NULL);
-  tor_assert(*in_len <= UINT_MAX);
-  tor_assert(*out_len <= UINT_MAX);
+  if (*in_len > UINT_MAX ||
+      *out_len > UINT_MAX) {
+    return TOR_COMPRESS_ERROR;
+  }
+
   state->stream.next_in = (unsigned char*) *in;
   state->stream.avail_in = (unsigned int)*in_len;
   state->stream.next_out = (unsigned char*) *out;