From 8d807b215f1ffc8b2705e6356f7450a9fcc602d1 Mon Sep 17 00:00:00 2001 From: Rasmus Villemoes Date: Thu, 8 Jun 2017 10:59:21 +0200 Subject: [PATCH] lib/data.c: avoid memleak if realloc fails --- lib/data.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/data.c b/lib/data.c index 00bdb79b1..83ecd0364 100644 --- a/lib/data.c +++ b/lib/data.c @@ -111,15 +111,16 @@ struct nl_data *nl_data_clone(const struct nl_data *src) int nl_data_append(struct nl_data *data, const void *buf, size_t size) { if (size > 0) { - data->d_data = realloc(data->d_data, data->d_size + size); - if (!data->d_data) + void *d_data = realloc(data->d_data, data->d_size + size); + if (!d_data) return -NLE_NOMEM; if (buf) - memcpy(data->d_data + data->d_size, buf, size); + memcpy(d_data + data->d_size, buf, size); else - memset(data->d_data + data->d_size, 0, size); + memset(d_data + data->d_size, 0, size); + data->d_data = d_data; data->d_size += size; }