]> The Tcpdump Group git mirrors - libpcap/commitdiff
No free in opt_init, rather in opt_cleanup
authorPhilippe Antoine <[email protected]>
Sun, 16 Jun 2019 18:20:43 +0000 (20:20 +0200)
committerPhilippe Antoine <[email protected]>
Sun, 16 Jun 2019 18:20:43 +0000 (20:20 +0200)
optimize.c

index 931655cd4dbdc5cc9d8c603c2e658e96957dfebc..8f3b4199d35887d468c519c09807f1f5099d1b04 100644 (file)
@@ -2188,8 +2188,6 @@ opt_init(opt_state_t *opt_state, struct icode *ic)
        opt_state->n_edges = 2 * opt_state->n_blocks;
        opt_state->edges = (struct edge **)calloc(opt_state->n_edges, sizeof(*opt_state->edges));
        if (opt_state->edges == NULL) {
-               free(opt_state->blocks);
-               opt_state->blocks = NULL;
                opt_error(opt_state, "malloc");
        }
 
@@ -2198,10 +2196,6 @@ opt_init(opt_state_t *opt_state, struct icode *ic)
         */
        opt_state->levels = (struct block **)calloc(opt_state->n_blocks, sizeof(*opt_state->levels));
        if (opt_state->levels == NULL) {
-               free(opt_state->edges);
-               free(opt_state->blocks);
-               opt_state->edges = NULL;
-               opt_state->blocks = NULL;
                opt_error(opt_state, "malloc");
        }
 
@@ -2212,12 +2206,6 @@ opt_init(opt_state_t *opt_state, struct icode *ic)
        opt_state->space = (bpf_u_int32 *)malloc(2 * opt_state->n_blocks * opt_state->nodewords * sizeof(*opt_state->space)
                                 + opt_state->n_edges * opt_state->edgewords * sizeof(*opt_state->space));
        if (opt_state->space == NULL) {
-               free(opt_state->levels);
-               free(opt_state->edges);
-               free(opt_state->blocks);
-               opt_state->levels = NULL;
-               opt_state->edges = NULL;
-               opt_state->blocks = NULL;
                opt_error(opt_state, "malloc");
        }
        p = opt_state->space;
@@ -2257,28 +2245,10 @@ opt_init(opt_state_t *opt_state, struct icode *ic)
        opt_state->maxval = 3 * max_stmts;
        opt_state->vmap = (struct vmapinfo *)calloc(opt_state->maxval, sizeof(*opt_state->vmap));
        if (opt_state->vmap == NULL) {
-               free(opt_state->space);
-               free(opt_state->levels);
-               free(opt_state->edges);
-               free(opt_state->blocks);
-               opt_state->space = NULL;
-               opt_state->levels = NULL;
-               opt_state->edges = NULL;
-               opt_state->blocks = NULL;
                opt_error(opt_state, "malloc");
        }
        opt_state->vnode_base = (struct valnode *)calloc(opt_state->maxval, sizeof(*opt_state->vnode_base));
        if (opt_state->vnode_base == NULL) {
-               free(opt_state->vmap);
-               free(opt_state->space);
-               free(opt_state->levels);
-               free(opt_state->edges);
-               free(opt_state->blocks);
-               opt_state->vmap = NULL;
-               opt_state->space = NULL;
-               opt_state->levels = NULL;
-               opt_state->edges = NULL;
-               opt_state->blocks = NULL;
                opt_error(opt_state, "malloc");
        }
 }