server: Retrieve the groups for a token from the server.
diff --git a/server/trace.c b/server/trace.c
index 350b2ac..f4de26b 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -560,6 +560,43 @@
remove_data( size );
}
+static void dump_varargs_token_groups( size_t size )
+{
+ const struct token_groups *tg = cur_data;
+ fputc( '{', stderr );
+ if (size >= sizeof(struct token_groups))
+ {
+ size_t offset = sizeof(*tg);
+ fprintf( stderr, "count=%08x,", tg->count );
+ if (tg->count * sizeof(unsigned int) <= size)
+ {
+ unsigned int i;
+ const unsigned int *attr = (const unsigned int *)(tg + 1);
+
+ offset += tg->count * sizeof(unsigned int);
+
+ fputc( '[', stderr );
+ for (i = 0; i < tg->count; i++)
+ {
+ const SID *sid = (const SID *)((const char *)cur_data + offset);
+ if (i != 0)
+ fputc( ',', stderr );
+ fputc( '{', stderr );
+ fprintf( stderr, "attributes=%08x", attr[i] );
+ fprintf( stderr, ",sid=" );
+ dump_inline_sid( sid, size - offset );
+ if ((offset + FIELD_OFFSET(SID, SubAuthority[0]) > size) ||
+ (offset + FIELD_OFFSET(SID, SubAuthority[sid->SubAuthorityCount]) > size))
+ break;
+ offset += FIELD_OFFSET(SID, SubAuthority[sid->SubAuthorityCount]);
+ fputc( '}', stderr );
+ }
+ fputc( ']', stderr );
+ }
+ }
+ fputc( '}', stderr );
+}
+
typedef void (*dump_func)( const void *req );
/* Everything below this line is generated automatically by tools/make_requests */
@@ -3096,6 +3133,18 @@
dump_varargs_SID( cur_size );
}
+static void dump_get_token_groups_request( const struct get_token_groups_request *req )
+{
+ fprintf( stderr, " handle=%p", req->handle );
+}
+
+static void dump_get_token_groups_reply( const struct get_token_groups_reply *req )
+{
+ fprintf( stderr, " user_len=%lu,", (unsigned long)req->user_len );
+ fprintf( stderr, " user=" );
+ dump_varargs_token_groups( cur_size );
+}
+
static void dump_create_mailslot_request( const struct create_mailslot_request *req )
{
fprintf( stderr, " access=%08x,", req->access );
@@ -3418,6 +3467,7 @@
(dump_func)dump_duplicate_token_request,
(dump_func)dump_access_check_request,
(dump_func)dump_get_token_user_request,
+ (dump_func)dump_get_token_groups_request,
(dump_func)dump_create_mailslot_request,
(dump_func)dump_open_mailslot_request,
(dump_func)dump_set_mailslot_info_request,
@@ -3633,6 +3683,7 @@
(dump_func)dump_duplicate_token_reply,
(dump_func)dump_access_check_reply,
(dump_func)dump_get_token_user_reply,
+ (dump_func)dump_get_token_groups_reply,
(dump_func)dump_create_mailslot_reply,
(dump_func)dump_open_mailslot_reply,
(dump_func)dump_set_mailslot_info_reply,
@@ -3848,6 +3899,7 @@
"duplicate_token",
"access_check",
"get_token_user",
+ "get_token_groups",
"create_mailslot",
"open_mailslot",
"set_mailslot_info",