rfx: fix possible segfault in error case
authorBernhard Miklautz <bernhard.miklautz@thincast.com>
Tue, 13 Dec 2016 14:36:05 +0000 (15:36 +0100)
committerArmin Novak <armin.novak@thincast.com>
Wed, 14 Dec 2016 09:31:17 +0000 (10:31 +0100)
libfreerdp/codec/rfx.c

index 8e8fee3..92b9901 100644 (file)
@@ -1191,7 +1191,10 @@ BOOL rfx_process_message(RFX_CONTEXT* context, const BYTE* data, UINT32 length,
                                if (!freerdp_image_copy(dst, dstFormat, dstStride,
                                                        nXDst, nYDst, nWidth, nHeight,
                                                        tile->data, context->pixel_format, stride, nXSrc, nYSrc, NULL, FREERDP_FLIP_NONE))
+                               {
+                                       region16_uninit(&updateRegion);
                                        goto fail;
+                               }
 
                                if (invalidRegion)
                                        region16_union_rect(invalidRegion, invalidRegion, &updateRects[j]);
@@ -1207,7 +1210,6 @@ BOOL rfx_process_message(RFX_CONTEXT* context, const BYTE* data, UINT32 length,
        }
 
 fail:
-       region16_uninit(&updateRegion);
        Stream_Free(s, FALSE);
        rfx_message_free(context, message);
        return FALSE;