]> granicus.if.org Git - libevent/commitdiff
Heap-allocate zlib data structure in regress_zlib tests
authorNick Mathewson <nickm@torproject.org>
Wed, 12 Mar 2014 18:29:15 +0000 (14:29 -0400)
committerNick Mathewson <nickm@torproject.org>
Wed, 12 Mar 2014 18:29:15 +0000 (14:29 -0400)
test/regress_zlib.c

index 9339397c93b6b2bd6f72e9c24f97535b581a9478..8406676932ed337f6b3c55b7f94fc3e4065658ad 100644 (file)
@@ -56,6 +56,7 @@
 #include "event2/bufferevent.h"
 
 #include "regress.h"
+#include "mm-internal.h"
 
 /* zlib 1.2.4 and 1.2.5 do some "clever" things with macros.  Instead of
    saying "(defined(FOO) ? FOO : 0)" they like to say "FOO-0", on the theory
@@ -95,6 +96,7 @@ zlib_deflate_free(void *ctx)
        z_streamp p = ctx;
 
        assert(deflateEnd(p) == Z_OK);
+       mm_free(p);
 }
 
 static void
@@ -103,6 +105,7 @@ zlib_inflate_free(void *ctx)
        z_streamp p = ctx;
 
        assert(inflateEnd(p) == Z_OK);
+       mm_free(p);
 }
 
 static int
@@ -275,7 +278,7 @@ test_bufferevent_zlib(void *arg)
 {
        struct bufferevent *bev1=NULL, *bev2=NULL;
        char buffer[8333];
-       z_stream z_input, z_output;
+       z_stream *z_input, *z_output;
        int i, r;
        evutil_socket_t pair[2] = {-1, -1};
        (void)arg;
@@ -293,18 +296,18 @@ test_bufferevent_zlib(void *arg)
        bev1 = bufferevent_socket_new(NULL, pair[0], 0);
        bev2 = bufferevent_socket_new(NULL, pair[1], 0);
 
-       memset(&z_output, 0, sizeof(z_output));
-       r = deflateInit(&z_output, Z_DEFAULT_COMPRESSION);
+       z_output = mm_calloc(sizeof(*z_output), 1);
+       r = deflateInit(z_output, Z_DEFAULT_COMPRESSION);
        tt_int_op(r, ==, Z_OK);
-       memset(&z_input, 0, sizeof(z_input));
-       r = inflateInit(&z_input);
+       z_input = mm_calloc(sizeof(*z_input), 1);
+       r = inflateInit(z_input);
        tt_int_op(r, ==, Z_OK);
 
        /* initialize filters */
        bev1 = bufferevent_filter_new(bev1, NULL, zlib_output_filter,
-           BEV_OPT_CLOSE_ON_FREE, zlib_deflate_free, &z_output);
+           BEV_OPT_CLOSE_ON_FREE, zlib_deflate_free, z_output);
        bev2 = bufferevent_filter_new(bev2, zlib_input_filter,
-           NULL, BEV_OPT_CLOSE_ON_FREE, zlib_inflate_free, &z_input);
+           NULL, BEV_OPT_CLOSE_ON_FREE, zlib_inflate_free, z_input);
        bufferevent_setcb(bev1, readcb, writecb, errorcb, NULL);
        bufferevent_setcb(bev2, readcb, writecb, errorcb, NULL);