Zebediah Figura : server: Return STATUS_KEY_DELETED when trying to retrieve the full name of a deleted key.
Module: wine Branch: oldstable Commit: 83923e43d57d624f52ef478bfb18d7f0fb6a91e1 URL: https://source.winehq.org/git/wine.git/?a=commit;h=83923e43d57d624f52ef478bf... Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Wed Jun 30 22:08:09 2021 -0500 server: Return STATUS_KEY_DELETED when trying to retrieve the full name of a deleted key. This fixes a server crash that can be triggered by deleting a key and then trying to retrieve its name. In that case key->parent is NULL. Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit 089b2528c2c933e3c9b45a5f559fa4b5f830872a) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- server/registry.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/registry.c b/server/registry.c index c937e051597..49601bda77e 100644 --- a/server/registry.c +++ b/server/registry.c @@ -402,6 +402,12 @@ static WCHAR *key_get_full_name( struct object *obj, data_size_t *ret_len ) data_size_t len = sizeof(root_name) - sizeof(WCHAR); char *ret; + if (key->flags & KEY_DELETED) + { + set_error( STATUS_KEY_DELETED ); + return NULL; + } + for (key = (struct key *)obj; key != root_key; key = key->parent) len += key->namelen + sizeof(WCHAR); if (!(ret = malloc( len ))) return NULL;
participants (1)
-
Alexandre Julliard