Commit e34747d1 authored by Deomid Ryabkov's avatar Deomid Ryabkov Committed by Marko Mikulicic

Handle case of malloc failure in mbuf_resize

    PUBLISHED_FROM=0cb98ac520b8aeb8bbeb2f23b8c65c62ab256021
parent 1a6bc7c5
...@@ -144,13 +144,15 @@ void mbuf_free(struct mbuf *mbuf) { ...@@ -144,13 +144,15 @@ void mbuf_free(struct mbuf *mbuf) {
void mbuf_resize(struct mbuf *a, size_t new_size) { void mbuf_resize(struct mbuf *a, size_t new_size) {
if (new_size > a->size || (new_size < a->size && new_size >= a->len)) { if (new_size > a->size || (new_size < a->size && new_size >= a->len)) {
a->buf = (char *) MBUF_REALLOC(a->buf, new_size); char *buf = (char *) MBUF_REALLOC(a->buf, new_size);
/* /*
* In case realloc fails, there's not much we can do except set size to 0. * In case realloc fails, there's not much we can do, except keep things as
* Note that NULL is a valid return value from realloc when size == 0, but * they are. Note that NULL is a valid return value from realloc when
* that is covered too. * size == 0, but that is covered too.
*/ */
a->size = (a->buf != NULL ? new_size : 0); if (buf == NULL && new_size != 0) return;
a->buf = buf;
a->size = new_size;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment