diff --git a/libfreerdp/core/update.c b/libfreerdp/core/update.c index 0fc5a9151..84e4f8837 100644 --- a/libfreerdp/core/update.c +++ b/libfreerdp/core/update.c @@ -2141,6 +2141,8 @@ void update_free(rdpUpdate* update) free(update->altsec); free(update->window->monitored_desktop.windowIds); free(update->window->window_state.titleInfo.string); + free(update->window->window_state.windowRects); + free(update->window->window_state.visibilityRects); free(update->window); MessageQueue_Free(update->queue); free(update); diff --git a/libfreerdp/core/window.c b/libfreerdp/core/window.c index db5560a32..405e24b5e 100644 --- a/libfreerdp/core/window.c +++ b/libfreerdp/core/window.c @@ -294,6 +294,7 @@ BOOL update_read_window_state_order(wStream* s, WINDOW_ORDER_INFO* orderInfo, WI Stream_Read_UINT16(s, windowState->numWindowRects); /* numWindowRects (2 bytes) */ + free(windowState->windowRects); size = sizeof(RECTANGLE_16) * windowState->numWindowRects; windowState->windowRects = (RECTANGLE_16*) malloc(size); if (!windowState->windowRects) @@ -328,6 +329,7 @@ BOOL update_read_window_state_order(wStream* s, WINDOW_ORDER_INFO* orderInfo, WI Stream_Read_UINT16(s, windowState->numVisibilityRects); /* numVisibilityRects (2 bytes) */ + free(windowState->visibilityRects); size = sizeof(RECTANGLE_16) * windowState->numVisibilityRects; windowState->visibilityRects = (RECTANGLE_16*) malloc(size); if (!windowState->visibilityRects)