]> git.proxmox.com Git - libgit2.git/commitdiff
checkout: fix double-free of checkout_data's mkdir_map
authorPatrick Steinhardt <ps@pks.im>
Mon, 20 Mar 2017 07:59:30 +0000 (08:59 +0100)
committerPatrick Steinhardt <ps@pks.im>
Mon, 20 Mar 2017 07:59:30 +0000 (08:59 +0100)
We currently call `git_strmap_free` on `checkout_data.mkdir_map` in the
`checkout_data_clear` function. The only thing protecting us from a
double-free is that the `git_strmap_free` function is in fact not a
function, but a macro that also sets the map to NULL.

Remove the second call to `git_strmap_free` and explicitly set the map
member to NULL.

src/checkout.c

index af600da6c36d7b4e2e3cfb9a64b8d89edb73ed2e..9d1eed59fc6294d402832310e95881e28ef42518 100644 (file)
@@ -2319,8 +2319,6 @@ static void checkout_data_clear(checkout_data *data)
        git__free(data->pfx);
        data->pfx = NULL;
 
-       git_strmap_free(data->mkdir_map);
-
        git_buf_free(&data->target_path);
        git_buf_free(&data->tmp);
 
@@ -2328,6 +2326,7 @@ static void checkout_data_clear(checkout_data *data)
        data->index = NULL;
 
        git_strmap_free(data->mkdir_map);
+       data->mkdir_map = NULL;
 
        git_attr_session__free(&data->attr_session);
 }