Messages in this thread Patch in this message | | | From | Namhyung Kim <> | Subject | [PATCH 3/5] tools lib traceevent: Check return value of realloc() | Date | Tue, 7 Jan 2014 12:00:10 +0900 |
| |
If realloc() fails, it'll leak the buffer. Also increate buffer size only if the allocation succeeded.
Signed-off-by: Namhyung Kim <namhyung@kernel.org> --- tools/lib/traceevent/trace-seq.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/tools/lib/traceevent/trace-seq.c b/tools/lib/traceevent/trace-seq.c index 1747aa50ecb0..b139d55a6bf9 100644 --- a/tools/lib/traceevent/trace-seq.c +++ b/tools/lib/traceevent/trace-seq.c @@ -80,10 +80,16 @@ void trace_seq_destroy(struct trace_seq *s) static void expand_buffer(struct trace_seq *s) { - s->buffer_size += TRACE_SEQ_BUF_SIZE; - s->buffer = realloc(s->buffer, s->buffer_size); - if (!s->buffer) + char *buf; + + buf = realloc(s->buffer, s->buffer_size + TRACE_SEQ_BUF_SIZE); + if (!buf) { s->state = TRACE_SEQ__MEM_ALLOC_FAILED; + return; + } + + s->buffer = buf; + s->buffer_size += TRACE_SEQ_BUF_SIZE; } /** -- 1.7.11.7
| |