Handle OOM in Stream_New()
authorHardening <rdp.effort@gmail.com>
Tue, 10 Feb 2015 09:26:32 +0000 (10:26 +0100)
committerHardening <rdp.effort@gmail.com>
Tue, 10 Feb 2015 09:26:32 +0000 (10:26 +0100)
winpr/libwinpr/utils/stream.c

index bce25f5..7ef0535 100644 (file)
@@ -67,21 +67,28 @@ wStream* Stream_New(BYTE* buffer, size_t size)
 
        s = malloc(sizeof(wStream));
 
-       if (s)
-       {
-               if (buffer)
-                       s->buffer = buffer;
-               else
-                       s->buffer = (BYTE*) malloc(size);
+       if (!s)
+               return NULL;
 
-               s->pointer = s->buffer;
-               s->capacity = size;
-               s->length = size;
 
-               s->pool = NULL;
-               s->count = 0;
+       if (buffer)
+               s->buffer = buffer;
+       else
+               s->buffer = (BYTE*) malloc(size);
+
+       if (!s->buffer)
+       {
+               free(s);
+               return NULL;
        }
 
+       s->pointer = s->buffer;
+       s->capacity = size;
+       s->length = size;
+
+       s->pool = NULL;
+       s->count = 0;
+
        return s;
 }