From 2e51f9aae37777762321f1e813a7e9c6050e02e2 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard <julliard@winehq.org> Date: Tue, 22 Sep 2020 16:52:31 +0200 Subject: [PATCH] server: Add an object operation to retrieve an object name. Signed-off-by: Alexandre Julliard <julliard@winehq.org> --- server/async.c | 2 ++ server/atom.c | 1 + server/change.c | 1 + server/clipboard.c | 1 + server/completion.c | 1 + server/console.c | 6 ++++++ server/debugger.c | 2 ++ server/device.c | 4 ++++ server/directory.c | 2 ++ server/event.c | 2 ++ server/fd.c | 4 ++++ server/file.c | 1 + server/handle.c | 3 ++- server/hook.c | 1 + server/mailslot.c | 4 ++++ server/mapping.c | 3 +++ server/mutex.c | 1 + server/named_pipe.c | 5 +++++ server/object.c | 7 ++++++- server/object.h | 5 ++++- server/process.c | 3 +++ server/queue.c | 2 ++ server/registry.c | 1 + server/request.c | 1 + server/semaphore.c | 1 + server/serial.c | 1 + server/signal.c | 1 + server/sock.c | 3 +++ server/symlink.c | 3 ++- server/thread.c | 3 +++ server/timer.c | 1 + server/token.c | 1 + server/winstation.c | 2 ++ 33 files changed, 75 insertions(+), 4 deletions(-) diff --git a/server/async.c b/server/async.c index 03994e8fac2..24fed811da2 100644 --- a/server/async.c +++ b/server/async.c @@ -76,6 +76,7 @@ static const struct object_ops async_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -489,6 +490,7 @@ static const struct object_ops iosb_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/atom.c b/server/atom.c index 57aff7b8918..e14650bde2c 100644 --- a/server/atom.c +++ b/server/atom.c @@ -86,6 +86,7 @@ static const struct object_ops atom_table_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/change.c b/server/change.c index a8f3329c722..8e4a272bc8b 100644 --- a/server/change.c +++ b/server/change.c @@ -121,6 +121,7 @@ static const struct object_ops dir_ops = default_fd_map_access, /* map_access */ dir_get_sd, /* get_sd */ dir_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/clipboard.c b/server/clipboard.c index e6884dd75fa..e4546832620 100644 --- a/server/clipboard.c +++ b/server/clipboard.c @@ -83,6 +83,7 @@ static const struct object_ops clipboard_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/completion.c b/server/completion.c index db04727b93b..0bad4d7a260 100644 --- a/server/completion.c +++ b/server/completion.c @@ -70,6 +70,7 @@ static const struct object_ops completion_ops = completion_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ diff --git a/server/console.c b/server/console.c index 2a5d7733fe1..c2dcd50dd83 100644 --- a/server/console.c +++ b/server/console.c @@ -100,6 +100,7 @@ static const struct object_ops console_input_ops = default_fd_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ console_input_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -158,6 +159,7 @@ static const struct object_ops console_input_events_ops = default_fd_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -226,6 +228,7 @@ static const struct object_ops console_server_ops = default_fd_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ console_server_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -308,6 +311,7 @@ static const struct object_ops screen_buffer_ops = default_fd_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -354,6 +358,7 @@ static const struct object_ops console_device_ops = default_fd_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ console_device_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ @@ -391,6 +396,7 @@ static const struct object_ops console_connection_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ console_connection_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ diff --git a/server/debugger.c b/server/debugger.c index 401ce36a47a..e4a6c1e43a8 100644 --- a/server/debugger.c +++ b/server/debugger.c @@ -79,6 +79,7 @@ static const struct object_ops debug_event_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -106,6 +107,7 @@ static const struct object_ops debug_ctx_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/device.c b/server/device.c index 01e08f295f7..4241f37e894 100644 --- a/server/device.c +++ b/server/device.c @@ -74,6 +74,7 @@ static const struct object_ops irp_call_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -113,6 +114,7 @@ static const struct object_ops device_manager_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -156,6 +158,7 @@ static const struct object_ops device_ops = default_fd_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ @@ -205,6 +208,7 @@ static const struct object_ops device_file_ops = default_fd_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/directory.c b/server/directory.c index c66d10b1928..ef0a1038a50 100644 --- a/server/directory.c +++ b/server/directory.c @@ -63,6 +63,7 @@ static const struct object_ops object_type_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ @@ -99,6 +100,7 @@ static const struct object_ops directory_ops = default_fd_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ directory_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ diff --git a/server/event.c b/server/event.c index d339d85aa45..cba9472aa3d 100644 --- a/server/event.c +++ b/server/event.c @@ -66,6 +66,7 @@ static const struct object_ops event_ops = event_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ @@ -100,6 +101,7 @@ static const struct object_ops keyed_event_ops = keyed_event_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ diff --git a/server/fd.c b/server/fd.c index 59db13bae52..edb59b0d540 100644 --- a/server/fd.c +++ b/server/fd.c @@ -216,6 +216,7 @@ static const struct object_ops fd_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -256,6 +257,7 @@ static const struct object_ops device_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -295,6 +297,7 @@ static const struct object_ops inode_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -336,6 +339,7 @@ static const struct object_ops file_lock_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/file.c b/server/file.c index 38260cfd2b3..4690af2424e 100644 --- a/server/file.c +++ b/server/file.c @@ -91,6 +91,7 @@ static const struct object_ops file_ops = default_fd_map_access, /* map_access */ file_get_sd, /* get_sd */ file_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ file_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/handle.c b/server/handle.c index e0a21329449..b2c7371e697 100644 --- a/server/handle.c +++ b/server/handle.c @@ -129,6 +129,7 @@ static const struct object_ops handle_table_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -670,7 +671,7 @@ DECL_HANDLER(get_object_info) reply->access = get_handle_access( current->process, req->handle ); reply->ref_count = obj->refcount; reply->handle_count = obj->handle_count; - if ((name = get_object_full_name( obj, &reply->total ))) + if ((name = obj->ops->get_full_name( obj, &reply->total ))) set_reply_data_ptr( name, min( reply->total, get_reply_max_size() )); release_object( obj ); } diff --git a/server/hook.c b/server/hook.c index ec6be582482..2a3da247313 100644 --- a/server/hook.c +++ b/server/hook.c @@ -87,6 +87,7 @@ static const struct object_ops hook_table_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/mailslot.c b/server/mailslot.c index 58d650cbb25..fa1a0c2c15a 100644 --- a/server/mailslot.c +++ b/server/mailslot.c @@ -84,6 +84,7 @@ static const struct object_ops mailslot_ops = mailslot_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ mailslot_link_name, /* link_name */ default_unlink_name, /* unlink_name */ @@ -141,6 +142,7 @@ static const struct object_ops mail_writer_ops = mail_writer_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -203,6 +205,7 @@ static const struct object_ops mailslot_device_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ mailslot_device_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ @@ -231,6 +234,7 @@ static const struct object_ops mailslot_device_file_ops = default_fd_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/mapping.c b/server/mapping.c index db0debe0af5..8955df7ec2e 100644 --- a/server/mapping.c +++ b/server/mapping.c @@ -74,6 +74,7 @@ static const struct object_ops ranges_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -109,6 +110,7 @@ static const struct object_ops shared_map_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -166,6 +168,7 @@ static const struct object_ops mapping_ops = mapping_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ diff --git a/server/mutex.c b/server/mutex.c index 8a8f7248eae..823ad54ffc3 100644 --- a/server/mutex.c +++ b/server/mutex.c @@ -67,6 +67,7 @@ static const struct object_ops mutex_ops = mutex_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ diff --git a/server/named_pipe.c b/server/named_pipe.c index e7e5436c0e5..4f9890258b4 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -124,6 +124,7 @@ static const struct object_ops named_pipe_ops = named_pipe_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ named_pipe_link_name, /* link_name */ default_unlink_name, /* unlink_name */ @@ -166,6 +167,7 @@ static const struct object_ops pipe_server_ops = default_fd_map_access, /* map_access */ pipe_end_get_sd, /* get_sd */ pipe_end_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -208,6 +210,7 @@ static const struct object_ops pipe_client_ops = default_fd_map_access, /* map_access */ pipe_end_get_sd, /* get_sd */ pipe_end_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -254,6 +257,7 @@ static const struct object_ops named_pipe_device_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ named_pipe_device_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ @@ -283,6 +287,7 @@ static const struct object_ops named_pipe_device_file_ops = default_fd_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/object.c b/server/object.c index 8ec6609f69d..c4c62cb78ad 100644 --- a/server/object.c +++ b/server/object.c @@ -158,7 +158,7 @@ const WCHAR *get_object_name( struct object *obj, data_size_t *len ) } /* get the full path name of an existing object */ -WCHAR *get_object_full_name( struct object *obj, data_size_t *ret_len ) +WCHAR *default_get_full_name( struct object *obj, data_size_t *ret_len ) { static const WCHAR backslash = '\\'; struct object *ptr = obj; @@ -686,6 +686,11 @@ int default_set_sd( struct object *obj, const struct security_descriptor *sd, return set_sd_defaults_from_token( obj, sd, set_info, current->process->token ); } +WCHAR *no_get_full_name( struct object *obj, data_size_t *ret_len ) +{ + return NULL; +} + struct object *no_lookup_name( struct object *obj, struct unicode_str *name, unsigned int attr ) { diff --git a/server/object.h b/server/object.h index 1f5c4a5f061..53e37b61a21 100644 --- a/server/object.h +++ b/server/object.h @@ -80,6 +80,8 @@ struct object_ops struct security_descriptor *(*get_sd)( struct object * ); /* sets the security descriptor of the object */ int (*set_sd)( struct object *, const struct security_descriptor *, unsigned int ); + /* get the object full name */ + WCHAR *(*get_full_name)(struct object *, data_size_t *); /* lookup a name if an object has a namespace */ struct object *(*lookup_name)(struct object *, struct unicode_str *,unsigned int); /* link an object's name into a parent object */ @@ -132,7 +134,7 @@ extern void *memdup( const void *data, size_t len ); extern void *alloc_object( const struct object_ops *ops ); extern void namespace_add( struct namespace *namespace, struct object_name *ptr ); extern const WCHAR *get_object_name( struct object *obj, data_size_t *len ); -extern WCHAR *get_object_full_name( struct object *obj, data_size_t *ret_len ); +extern WCHAR *default_get_full_name( struct object *obj, data_size_t *ret_len ); extern void dump_object_name( struct object *obj ); extern struct object *lookup_named_object( struct object *root, const struct unicode_str *name, unsigned int attr, struct unicode_str *name_left ); @@ -164,6 +166,7 @@ extern struct security_descriptor *default_get_sd( struct object *obj ); extern int default_set_sd( struct object *obj, const struct security_descriptor *sd, unsigned int set_info ); extern int set_sd_defaults_from_token( struct object *obj, const struct security_descriptor *sd, unsigned int set_info, struct token *token ); +extern WCHAR *no_get_full_name( struct object *obj, data_size_t *ret_len ); extern struct object *no_lookup_name( struct object *obj, struct unicode_str *name, unsigned int attributes ); extern int no_link_name( struct object *obj, struct object_name *name, struct object *parent ); extern void default_unlink_name( struct object *obj, struct object_name *name ); diff --git a/server/process.c b/server/process.c index 72ffa8e9a5a..1c9148f1e0c 100644 --- a/server/process.c +++ b/server/process.c @@ -84,6 +84,7 @@ static const struct object_ops process_ops = process_map_access, /* map_access */ process_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -134,6 +135,7 @@ static const struct object_ops startup_info_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -179,6 +181,7 @@ static const struct object_ops job_ops = job_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ diff --git a/server/queue.c b/server/queue.c index c1016016051..2c780a94e2c 100644 --- a/server/queue.c +++ b/server/queue.c @@ -177,6 +177,7 @@ static const struct object_ops msg_queue_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -213,6 +214,7 @@ static const struct object_ops thread_input_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/registry.c b/server/registry.c index dcbb3f791e1..f4386d9bfb5 100644 --- a/server/registry.c +++ b/server/registry.c @@ -165,6 +165,7 @@ static const struct object_ops key_ops = key_map_access, /* map_access */ key_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/request.c b/server/request.c index 8f3bad8701d..45076d90e25 100644 --- a/server/request.c +++ b/server/request.c @@ -102,6 +102,7 @@ static const struct object_ops master_socket_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/semaphore.c b/server/semaphore.c index 6e2415fd79a..cbcf4a4f942 100644 --- a/server/semaphore.c +++ b/server/semaphore.c @@ -64,6 +64,7 @@ static const struct object_ops semaphore_ops = semaphore_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ diff --git a/server/serial.c b/server/serial.c index 4292472613a..30fe6e8380f 100644 --- a/server/serial.c +++ b/server/serial.c @@ -98,6 +98,7 @@ static const struct object_ops serial_ops = default_fd_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/signal.c b/server/signal.c index c81f6b8e989..8a9cbdd0ed3 100644 --- a/server/signal.c +++ b/server/signal.c @@ -73,6 +73,7 @@ static const struct object_ops handler_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/sock.c b/server/sock.c index 346d3758f30..c9cf2d56da3 100644 --- a/server/sock.c +++ b/server/sock.c @@ -152,6 +152,7 @@ static const struct object_ops sock_ops = default_fd_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -985,6 +986,7 @@ static const struct object_ops ifchange_ops = default_fd_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -1204,6 +1206,7 @@ static const struct object_ops socket_device_ops = default_fd_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ socket_device_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ diff --git a/server/symlink.c b/server/symlink.c index 7a2f8642d5f..b620f2accb9 100644 --- a/server/symlink.c +++ b/server/symlink.c @@ -66,6 +66,7 @@ static const struct object_ops symlink_ops = symlink_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ symlink_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ @@ -164,7 +165,7 @@ struct object *create_obj_symlink( struct object *root, const struct unicode_str data_size_t len; WCHAR *target_name; - if (!(target_name = get_object_full_name( target, &len ))) + if (!(target_name = target->ops->get_full_name( target, &len ))) { set_error( STATUS_INVALID_PARAMETER ); return NULL; diff --git a/server/thread.c b/server/thread.c index 9b14174578e..eb138079739 100644 --- a/server/thread.c +++ b/server/thread.c @@ -116,6 +116,7 @@ static const struct object_ops thread_apc_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -152,6 +153,7 @@ static const struct object_ops context_ops = no_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ @@ -186,6 +188,7 @@ static const struct object_ops thread_ops = thread_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/timer.c b/server/timer.c index 469f9d5a90b..d4e5c56267c 100644 --- a/server/timer.c +++ b/server/timer.c @@ -71,6 +71,7 @@ static const struct object_ops timer_ops = timer_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ diff --git a/server/token.c b/server/token.c index 2fa95e17aaf..23e85ebbff3 100644 --- a/server/token.c +++ b/server/token.c @@ -152,6 +152,7 @@ static const struct object_ops token_ops = token_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + no_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ no_link_name, /* link_name */ NULL, /* unlink_name */ diff --git a/server/winstation.c b/server/winstation.c index 2962ea0df4a..b0142908549 100644 --- a/server/winstation.c +++ b/server/winstation.c @@ -70,6 +70,7 @@ static const struct object_ops winstation_ops = winstation_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ winstation_lookup_name, /* lookup_name */ directory_link_name, /* link_name */ default_unlink_name, /* unlink_name */ @@ -94,6 +95,7 @@ static const struct object_ops desktop_ops = desktop_map_access, /* map_access */ default_get_sd, /* get_sd */ default_set_sd, /* set_sd */ + default_get_full_name, /* get_full_name */ no_lookup_name, /* lookup_name */ desktop_link_name, /* link_name */ default_unlink_name, /* unlink_name */ -- GitLab