Re: [PATCH 1/3] write_entry: fix leak when retrying delayed filter
On Tue, Oct 10, 2017 at 05:25:43AM -0400, Jeff King wrote: > On Tue, Oct 10, 2017 at 11:23:19AM +0200, Simon Ruderich wrote: >> On Tue, Oct 10, 2017 at 09:00:09AM +0900, Junio C Hamano wrote: --- a/entry.c +++ b/entry.c @@ -283,6 +283,7 @@ static int write_entry(struct cache_entry *ce, if (dco && dco->state != CE_NO_DELAY) { /* Do not send the blob in case of a retry. */ if (dco->state == CE_RETRY) { + free(new); new = NULL; size = 0; } >> >> FREE_AND_NULL(new)? > > Ah, yeah, I forgot we had that now. It would work here, but note that > this code ends up going away later in the series. Ah sorry, missed that. Then never mind. Regards Simon -- + privacy is necessary + using gnupg http://gnupg.org + public key id: 0x92FEFDB7E44C32F9
Re: [PATCH 1/3] write_entry: fix leak when retrying delayed filter
On Tue, Oct 10, 2017 at 11:23:19AM +0200, Simon Ruderich wrote: > On Tue, Oct 10, 2017 at 09:00:09AM +0900, Junio C Hamano wrote: > >> --- a/entry.c > >> +++ b/entry.c > >> @@ -283,6 +283,7 @@ static int write_entry(struct cache_entry *ce, > >>if (dco && dco->state != CE_NO_DELAY) { > >>/* Do not send the blob in case of a retry. */ > >>if (dco->state == CE_RETRY) { > >> + free(new); > >>new = NULL; > >>size = 0; > >>} > > FREE_AND_NULL(new)? Ah, yeah, I forgot we had that now. It would work here, but note that this code ends up going away later in the series. -Peff
Re: [PATCH 1/3] write_entry: fix leak when retrying delayed filter
On Tue, Oct 10, 2017 at 09:00:09AM +0900, Junio C Hamano wrote: >> --- a/entry.c >> +++ b/entry.c >> @@ -283,6 +283,7 @@ static int write_entry(struct cache_entry *ce, >> if (dco && dco->state != CE_NO_DELAY) { >> /* Do not send the blob in case of a retry. */ >> if (dco->state == CE_RETRY) { >> +free(new); >> new = NULL; >> size = 0; >> } FREE_AND_NULL(new)? Regards Simon -- + privacy is necessary + using gnupg http://gnupg.org + public key id: 0x92FEFDB7E44C32F9
Re: [PATCH 1/3] write_entry: fix leak when retrying delayed filter
Jeff Kingwrites: > When write_entry() retries a delayed filter request, we > don't need to send the blob content to the filter again, and > set the pointer to NULL. But doing so means we leak the > contents we read earlier from read_blob_entry(). Let's make > sure to free it before dropping the pointer. > > Signed-off-by: Jeff King > --- > entry.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/entry.c b/entry.c > index ab79f1f69c..637c5958b0 100644 > --- a/entry.c > +++ b/entry.c > @@ -283,6 +283,7 @@ static int write_entry(struct cache_entry *ce, > if (dco && dco->state != CE_NO_DELAY) { > /* Do not send the blob in case of a retry. */ > if (dco->state == CE_RETRY) { > + free(new); > new = NULL; > size = 0; > } Looks good to me. Thanks.