mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice-common
synced 2025-12-31 19:45:43 +00:00
canvas: Remove possible leak on LZ decompression failure
longjmp can happen in different places, even after the palette is allocated so we need to free it if it got allocated. Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Acked-by: Uri Lublin <uril@redhat.com>
This commit is contained in:
parent
d11df6b66b
commit
29eff61cf8
@ -783,15 +783,17 @@ static pixman_image_t *canvas_get_lz(CanvasBase *canvas, SpiceImage *image,
|
||||
int top_down;
|
||||
int stride_encoded;
|
||||
int stride;
|
||||
int free_palette;
|
||||
int free_palette = FALSE;
|
||||
|
||||
if (setjmp(lz_data->jmp_env)) {
|
||||
if (free_palette) {
|
||||
free(palette);
|
||||
}
|
||||
free(decomp_buf);
|
||||
spice_warning("%s", lz_data->message_buf);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
free_palette = FALSE;
|
||||
if (image->descriptor.type == SPICE_IMAGE_TYPE_LZ_RGB) {
|
||||
spice_return_val_if_fail(image->u.lz_rgb.data->num_chunks == 1, NULL); /* TODO: Handle chunks */
|
||||
comp_buf = image->u.lz_rgb.data->chunk[0].data;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user