Skip to content

Commit

Permalink
Merge pull request the-tcpdump-group#826 from catenacyber/doublefree
Browse files Browse the repository at this point in the history
Fixes double free in opt_cleanup
  • Loading branch information
guyharris authored Jun 16, 2019
2 parents 2e9d0ae + 643d780 commit ebaafda
Showing 1 changed file with 0 additions and 15 deletions.
15 changes: 0 additions & 15 deletions optimize.c
Original file line number Diff line number Diff line change
Expand Up @@ -2182,7 +2182,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_error(opt_state, "malloc");
}

Expand All @@ -2191,8 +2190,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_error(opt_state, "malloc");
}

Expand All @@ -2203,9 +2200,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_error(opt_state, "malloc");
}
p = opt_state->space;
Expand Down Expand Up @@ -2245,19 +2239,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_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_error(opt_state, "malloc");
}
}
Expand Down

0 comments on commit ebaafda

Please sign in to comment.