diff options
author | Junio C Hamano <gitster@pobox.com> | 2022-06-14 01:53:43 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2022-06-14 01:53:43 +0300 |
commit | fe66167535dd8b395f16fcba7863c36beb365ef9 (patch) | |
tree | bbad8655331109127b8fe845bd9a05efd97b3b76 | |
parent | 70055ef1bf813e184d2594a0dd8f733caead6ed3 (diff) | |
parent | 323822c72be59ce2900cc036c5bad4f10bafbb53 (diff) |
Merge branch 'ab/remote-free-fix'
Use-after-free (with another forget-to-free) fix.
* ab/remote-free-fix:
remote.c: don't dereference NULL in freeing loop
remote.c: remove braces from one-statement "for"-loops
-rw-r--r-- | remote.c | 11 |
1 files changed, 4 insertions, 7 deletions
@@ -146,14 +146,12 @@ static void remote_clear(struct remote *remote) free((char *)remote->name); free((char *)remote->foreign_vcs); - for (i = 0; i < remote->url_nr; i++) { + for (i = 0; i < remote->url_nr; i++) free((char *)remote->url[i]); - } - FREE_AND_NULL(remote->pushurl); + FREE_AND_NULL(remote->url); - for (i = 0; i < remote->pushurl_nr; i++) { + for (i = 0; i < remote->pushurl_nr; i++) free((char *)remote->pushurl[i]); - } FREE_AND_NULL(remote->pushurl); free((char *)remote->receivepack); free((char *)remote->uploadpack); @@ -2771,9 +2769,8 @@ void remote_state_clear(struct remote_state *remote_state) { int i; - for (i = 0; i < remote_state->remotes_nr; i++) { + for (i = 0; i < remote_state->remotes_nr; i++) remote_clear(remote_state->remotes[i]); - } FREE_AND_NULL(remote_state->remotes); remote_state->remotes_alloc = 0; remote_state->remotes_nr = 0; |