From 129c2084d7aa8d70784307817ace7d1f1bc6090e Mon Sep 17 00:00:00 2001 From: Hardening Date: Tue, 10 Feb 2015 10:26:32 +0100 Subject: [PATCH] Handle OOM in Stream_New() --- winpr/libwinpr/utils/stream.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/winpr/libwinpr/utils/stream.c b/winpr/libwinpr/utils/stream.c index bce25f541..7ef0535ff 100644 --- a/winpr/libwinpr/utils/stream.c +++ b/winpr/libwinpr/utils/stream.c @@ -67,21 +67,28 @@ wStream* Stream_New(BYTE* buffer, size_t size) s = malloc(sizeof(wStream)); - if (s) + if (!s) + return NULL; + + + if (buffer) + s->buffer = buffer; + else + s->buffer = (BYTE*) malloc(size); + + if (!s->buffer) { - if (buffer) - s->buffer = buffer; - else - s->buffer = (BYTE*) malloc(size); - - s->pointer = s->buffer; - s->capacity = size; - s->length = size; - - s->pool = NULL; - s->count = 0; + free(s); + return NULL; } + s->pointer = s->buffer; + s->capacity = size; + s->length = size; + + s->pool = NULL; + s->count = 0; + return s; }