From 1a6bc7c51452162e5de00bc9fd59dafe831a7caa Mon Sep 17 00:00:00 2001 From: Deomid Ryabkov <rojer@cesanta.com> Date: Wed, 28 Oct 2015 23:49:08 +0000 Subject: [PATCH] Fix mbuf_resize(0) PUBLISHED_FROM=7cab7543db990f7f67b53edca4f65ba45b219711 --- mongoose.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/mongoose.c b/mongoose.c index 92e45482f..8df21bbbc 100644 --- a/mongoose.c +++ b/mongoose.c @@ -143,11 +143,14 @@ void mbuf_free(struct mbuf *mbuf) { } void mbuf_resize(struct mbuf *a, size_t new_size) { - char *p; - if ((new_size > a->size || (new_size < a->size && new_size >= a->len)) && - (p = (char *) MBUF_REALLOC(a->buf, new_size)) != NULL) { - a->size = new_size; - a->buf = p; + if (new_size > a->size || (new_size < a->size && new_size >= a->len)) { + a->buf = (char *) MBUF_REALLOC(a->buf, new_size); + /* + * In case realloc fails, there's not much we can do except set size to 0. + * Note that NULL is a valid return value from realloc when size == 0, but + * that is covered too. + */ + a->size = (a->buf != NULL ? new_size : 0); } } -- GitLab