Skip to content

Commit

Permalink
small fix for ccan/take/take.c
Browse files Browse the repository at this point in the history
Hello.

I've decided to take a look at c-lighting code, because we might
consider using it in the future.

I found a small problem in ccan/take/take.c that only concerns code
that runs with CCAN_TAKE_DEBUG set (DEVELOPER=1 for c-lighting).

It is a small issue, but I decided to notify you as the author of the
code, anyway.

the issue is:
  in take_() function, potential failure of realloc for labelarr is not
  handled.

I attached a diff with a fix.

I thought that making a pull request for c-lighting would not be right,
as ccan is a separate project, but I did not find a way to report this
at http://git.ozlabs.org/, where ccan repo resides.

Therefore I wrote to you directly.

[ Minor whitespace changes --RR ]
  • Loading branch information
dgpv authored and rustyrussell committed Nov 5, 2018
1 parent c656dce commit 440efa5
Showing 1 changed file with 14 additions and 3 deletions.
17 changes: 14 additions & 3 deletions ccan/take/take.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,20 @@ void *take_(const void *p, const char *label)
}
takenarr = new;
/* Once labelarr is set, we maintain it. */
if (labelarr)
labelarr = realloc(labelarr,
sizeof(*labelarr) * (max_taken+1));
if (labelarr) {
const char **labelarr_new;
labelarr_new = realloc(labelarr,
sizeof(*labelarr) * (max_taken+1));
if (labelarr_new) {
labelarr = labelarr_new;
} else {
/* num_taken will be out of sync with the size of
* labelarr after realloc failure.
* Just pretend that we never had labelarr allocated. */
free(labelarr);
labelarr = NULL;
}
}
max_taken++;
}
if (unlikely(labelarr))
Expand Down

0 comments on commit 440efa5

Please sign in to comment.