diff options
author | David Robillard <d@drobilla.net> | 2023-09-10 11:50:45 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2023-09-22 23:54:50 -0400 |
commit | 031decbb82f34313a2403e8852ce630b573eb177 (patch) | |
tree | a4b564638bb4462a2b6bec5eaa65274a0ac44f40 /src/writer.c | |
parent | af1d31f6ee9d822d85087ad03ad8b2cee5a36744 (diff) | |
download | serd-031decbb82f34313a2403e8852ce630b573eb177.tar.gz serd-031decbb82f34313a2403e8852ce630b573eb177.tar.bz2 serd-031decbb82f34313a2403e8852ce630b573eb177.zip |
Fix potential realloc leaks
Diffstat (limited to 'src/writer.c')
-rw-r--r-- | src/writer.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/writer.c b/src/writer.c index 07edc7f4..2a6d7c31 100644 --- a/src/writer.c +++ b/src/writer.c @@ -1266,9 +1266,12 @@ size_t serd_chunk_sink(const void* buf, size_t len, void* stream) { SerdChunk* chunk = (SerdChunk*)stream; - chunk->buf = (uint8_t*)realloc((uint8_t*)chunk->buf, chunk->len + len); - memcpy((uint8_t*)chunk->buf + chunk->len, buf, len); - chunk->len += len; + uint8_t* new_buf = (uint8_t*)realloc((uint8_t*)chunk->buf, chunk->len + len); + if (new_buf) { + memcpy(new_buf + chunk->len, buf, len); + chunk->buf = new_buf; + chunk->len += len; + } return len; } |