mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2025-12-30 01:42:27 +00:00
image_encoders: check shared_dict before accessing it
In both image_encoders_restore_glz_dictionary() and image_encoders_get_glz_dictionary() shared-dict may be NULL if size is too large, and the server gets size from the network. Both functions end up calling glz_enc_dictionary_create() that calls glz_dictionary_window_create() where size is checked. Found by coverity. Signed-off-by: Uri Lublin <uril@redhat.com> Acked-by: Frediano Ziglio <fziglio@redhat.com>
This commit is contained in:
parent
a286da42d2
commit
dad108edb1
@ -746,7 +746,9 @@ gboolean image_encoders_get_glz_dictionary(ImageEncoders *enc,
|
||||
shared_dict->refs++;
|
||||
} else {
|
||||
shared_dict = create_glz_dictionary(enc, client, id, window_size);
|
||||
glz_dictionary_list = g_list_prepend(glz_dictionary_list, shared_dict);
|
||||
if (shared_dict != NULL) {
|
||||
glz_dictionary_list = g_list_prepend(glz_dictionary_list, shared_dict);
|
||||
}
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&glz_dictionary_list_lock);
|
||||
@ -782,7 +784,9 @@ gboolean image_encoders_restore_glz_dictionary(ImageEncoders *enc,
|
||||
shared_dict->refs++;
|
||||
} else {
|
||||
shared_dict = restore_glz_dictionary(enc, client, id, restore_data);
|
||||
glz_dictionary_list = g_list_prepend(glz_dictionary_list, shared_dict);
|
||||
if(shared_dict != NULL) {
|
||||
glz_dictionary_list = g_list_prepend(glz_dictionary_list, shared_dict);
|
||||
}
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&glz_dictionary_list_lock);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user