Made request tracing more robust against bogus lengths.

diff --git a/server/atom.c b/server/atom.c
index c1f4059..c69ae1f 100644
--- a/server/atom.c
+++ b/server/atom.c
@@ -277,5 +277,6 @@
 /* get global atom name */
 DECL_HANDLER(get_atom_name)
 {
+    req->name[0] = 0;
     req->count = get_atom_name( global_table, req->atom, req->name );
 }
diff --git a/server/console.c b/server/console.c
index 43fb54c..baf3d93 100644
--- a/server/console.c
+++ b/server/console.c
@@ -439,7 +439,7 @@
 /* set info about a console (output only) */
 DECL_HANDLER(set_console_info)
 {
-    size_t len = get_req_strlen( req->title );
+    size_t len = get_req_strlen( req, req->title );
     set_console_info( req->handle, req, req->title, len );
 }
 
@@ -447,13 +447,14 @@
 DECL_HANDLER(get_console_info)
 {
     struct screen_buffer *console;
+    req->title[0] = 0;
     if ((console = (struct screen_buffer *)get_handle_obj( current->process, req->handle,
                                                            GENERIC_READ, &screen_buffer_ops )))
     {
         req->cursor_size    = console->cursor_size;
         req->cursor_visible = console->cursor_visible;
         req->pid            = console->pid;
-        strcpy( req->title, console->title ? console->title : "" );
+        if (console->title) strcpy( req->title, console->title );
         release_object( console );
     }
 }
@@ -496,7 +497,7 @@
 /* add input records to a console input queue */
 DECL_HANDLER(write_console_input)
 {
-    int max = get_req_size( req + 1, sizeof(INPUT_RECORD) );
+    int max = get_req_size( req, req + 1, sizeof(INPUT_RECORD) );
     int count = req->count;
 
     if (count > max) count = max;
@@ -506,7 +507,7 @@
 /* fetch input records from a console input queue */
 DECL_HANDLER(read_console_input)
 {
-    int max = get_req_size( req + 1, sizeof(INPUT_RECORD) );
+    int max = get_req_size( req, req + 1, sizeof(INPUT_RECORD) );
     req->read = read_console_input( req->handle, req->count, (INPUT_RECORD *)(req + 1),
                                     max, req->flush );
 }
diff --git a/server/event.c b/server/event.c
index 5759254..0b9cd20 100644
--- a/server/event.c
+++ b/server/event.c
@@ -114,7 +114,7 @@
 /* create an event */
 DECL_HANDLER(create_event)
 {
-    size_t len = get_req_strlenW( req->name );
+    size_t len = get_req_strlenW( req, req->name );
     struct event *event;
 
     req->handle = -1;
@@ -128,7 +128,7 @@
 /* open a handle to an event */
 DECL_HANDLER(open_event)
 {
-    size_t len = get_req_strlenW( req->name );
+    size_t len = get_req_strlenW( req, req->name );
     req->handle = open_object( req->name, len, &event_ops, req->access, req->inherit );
 }
 
diff --git a/server/file.c b/server/file.c
index e5b514a..429a05a 100644
--- a/server/file.c
+++ b/server/file.c
@@ -450,7 +450,7 @@
 /* create a file */
 DECL_HANDLER(create_file)
 {
-    size_t len = get_req_strlen( req->name );
+    size_t len = get_req_strlen( req, req->name );
     struct file *file;
 
     req->handle = -1;
diff --git a/server/mapping.c b/server/mapping.c
index 39a416b..b685317 100644
--- a/server/mapping.c
+++ b/server/mapping.c
@@ -160,7 +160,7 @@
 /* create a file mapping */
 DECL_HANDLER(create_mapping)
 {
-    size_t len = get_req_strlenW( req->name );
+    size_t len = get_req_strlenW( req, req->name );
     struct object *obj;
 
     req->handle = -1;
@@ -177,7 +177,7 @@
 /* open a handle to a mapping */
 DECL_HANDLER(open_mapping)
 {
-    size_t len = get_req_strlenW( req->name );
+    size_t len = get_req_strlenW( req, req->name );
     req->handle = open_object( req->name, len, &mapping_ops, req->access, req->inherit );
 }
 
diff --git a/server/mutex.c b/server/mutex.c
index 2243aef..7f74b7b 100644
--- a/server/mutex.c
+++ b/server/mutex.c
@@ -139,7 +139,7 @@
 /* create a mutex */
 DECL_HANDLER(create_mutex)
 {
-    size_t len = get_req_strlenW( req->name );
+    size_t len = get_req_strlenW( req, req->name );
     struct mutex *mutex;
 
     req->handle = -1;
@@ -153,7 +153,7 @@
 /* open a handle to a mutex */
 DECL_HANDLER(open_mutex)
 {
-    size_t len = get_req_strlenW( req->name );
+    size_t len = get_req_strlenW( req, req->name );
     req->handle = open_object( req->name, len, &mutex_ops, req->access, req->inherit );
 }
 
diff --git a/server/process.c b/server/process.c
index eab9801..da9d84c 100644
--- a/server/process.c
+++ b/server/process.c
@@ -578,7 +578,7 @@
 /* create a new process */
 DECL_HANDLER(new_process)
 {
-    size_t len = get_req_strlen( req->cmdline );
+    size_t len = get_req_strlen( req, req->cmdline );
     struct thread *thread;
     int sock[2];
 
@@ -722,7 +722,7 @@
     if ((process = get_process_from_handle( req->handle, PROCESS_VM_READ )))
     {
         read_process_memory( process, req->addr, req->len,
-                             get_req_size( req->data, sizeof(int) ), req->data );
+                             get_req_size( req, req->data, sizeof(int) ), req->data );
         release_object( process );
     }
 }
@@ -734,7 +734,8 @@
 
     if ((process = get_process_from_handle( req->handle, PROCESS_VM_WRITE )))
     {
-        write_process_memory( process, req->addr, req->len, get_req_size( req->data, sizeof(int) ),
+        write_process_memory( process, req->addr, req->len,
+                              get_req_size( req, req->data, sizeof(int) ),
                               req->first_mask, req->last_mask, req->data );
         release_object( process );
     }
diff --git a/server/registry.c b/server/registry.c
index ef5ccad..f31237a 100644
--- a/server/registry.c
+++ b/server/registry.c
@@ -308,10 +308,10 @@
 }
 
 /* duplicate a Unicode string from the request buffer */
-static WCHAR *req_strdupW( const WCHAR *str )
+static WCHAR *req_strdupW( const void *req, const WCHAR *str )
 {
     WCHAR *name;
-    size_t len = get_req_strlenW( str );
+    size_t len = get_req_strlenW( req, str );
     if ((name = mem_alloc( (len + 1) * sizeof(WCHAR) )) != NULL)
     {
         memcpy( name, str, len * sizeof(WCHAR) );
@@ -741,7 +741,6 @@
     else
     {
         *type = -1;
-        *len = 0;
         set_error( STATUS_OBJECT_NAME_NOT_FOUND );
     }
 }
@@ -751,12 +750,7 @@
 {
     struct key_value *value;
 
-    if (i < 0 || i > key->last_value)
-    {
-        name[0] = 0;
-        *len = 0;
-        set_error( STATUS_NO_MORE_ENTRIES );
-    }
+    if (i < 0 || i > key->last_value) set_error( STATUS_NO_MORE_ENTRIES );
     else
     {
         value = &key->values[i];
@@ -1378,7 +1372,7 @@
     req->hkey = -1;
     if ((parent = get_hkey_obj( req->parent, KEY_CREATE_SUB_KEY )))
     {
-        if ((class = req_strdupW( req->class )))
+        if ((class = req_strdupW( req, req->class )))
         {
             if ((key = create_key( parent, req->name, sizeof(req->name), class, req->options,
                                    req->modif, &req->created )))
@@ -1436,6 +1430,7 @@
 {
     struct key *key;
 
+    req->name[0] = req->class[0] = 0;
     if ((key = get_hkey_obj( req->hkey, KEY_ENUMERATE_SUB_KEYS )))
     {
         enum_key( key, req->index, req->name, req->class, &req->modif );
@@ -1448,6 +1443,7 @@
 {
     struct key *key;
 
+    req->name[0] = req->class[0] = 0;
     if ((key = get_hkey_obj( req->hkey, KEY_QUERY_VALUE )))
     {
         query_key( key, req );
@@ -1459,7 +1455,7 @@
 DECL_HANDLER(set_key_value)
 {
     struct key *key;
-    int max = get_req_size( req->data, sizeof(req->data[0]) );
+    int max = get_req_size( req, req->data, sizeof(req->data[0]) );
     int datalen = req->len;
     if (datalen > max)
     {
@@ -1478,6 +1474,7 @@
 {
     struct key *key;
 
+    req->len = 0;
     if ((key = get_hkey_obj( req->hkey, KEY_QUERY_VALUE )))
     {
         get_value( key, copy_path( req->name ), &req->type, &req->len, req->data );
@@ -1490,6 +1487,8 @@
 {
     struct key *key;
 
+    req->len = 0;
+    req->name[0] = 0;
     if ((key = get_hkey_obj( req->hkey, KEY_QUERY_VALUE )))
     {
         enum_value( key, req->index, req->name, &req->type, &req->len, req->data );
@@ -1505,7 +1504,7 @@
 
     if ((key = get_hkey_obj( req->hkey, KEY_SET_VALUE )))
     {
-        if ((name = req_strdupW( req->name )))
+        if ((name = req_strdupW( req, req->name )))
         {
             delete_value( key, name );
             free( name );
diff --git a/server/request.h b/server/request.h
index 3e746db..2359215 100644
--- a/server/request.h
+++ b/server/request.h
@@ -46,24 +46,24 @@
 }
 
 /* get the remaining size in the request buffer for object of a given size */
-static inline int get_req_size( const void *ptr, size_t typesize )
+static inline int get_req_size( const void *req, const void *ptr, size_t typesize )
 {
-    return ((char *)current->buffer + MAX_REQUEST_LENGTH - (char *)ptr) / typesize;
+    return ((char *)req + MAX_REQUEST_LENGTH - (char *)ptr) / typesize;
 }
 
 /* get the length of a request string, without going past the end of the request */
-static inline size_t get_req_strlen( const char *str )
+static inline size_t get_req_strlen( const void *req, const char *str )
 {
     const char *p = str;
-    while (*p && (p < (char *)current->buffer + MAX_REQUEST_LENGTH - 1)) p++;
+    while (*p && (p < (char *)req + MAX_REQUEST_LENGTH - 1)) p++;
     return p - str;
 }
 
 /* same as above for Unicode */
-static inline size_t get_req_strlenW( const WCHAR *str )
+static inline size_t get_req_strlenW( const void *req, const WCHAR *str )
 {
     const WCHAR *p = str;
-    while (*p && ((char *)p < (char *)current->buffer + MAX_REQUEST_LENGTH - 2)) p++;
+    while (*p && (p < (WCHAR *)req + MAX_REQUEST_LENGTH/sizeof(WCHAR) - 1)) p++;
     return p - str;
 }
 
diff --git a/server/semaphore.c b/server/semaphore.c
index 6346fc2..94fe31f 100644
--- a/server/semaphore.c
+++ b/server/semaphore.c
@@ -122,7 +122,7 @@
 /* create a semaphore */
 DECL_HANDLER(create_semaphore)
 {
-    size_t len = get_req_strlenW( req->name );
+    size_t len = get_req_strlenW( req, req->name );
     struct semaphore *sem;
 
     req->handle = -1;
@@ -136,7 +136,7 @@
 /* open a handle to a semaphore */
 DECL_HANDLER(open_semaphore)
 {
-    size_t len = get_req_strlenW( req->name );
+    size_t len = get_req_strlenW( req, req->name );
     req->handle = open_object( req->name, len, &semaphore_ops, req->access, req->inherit );
 }
 
diff --git a/server/timer.c b/server/timer.c
index 6caa22a..ec47917 100644
--- a/server/timer.c
+++ b/server/timer.c
@@ -164,7 +164,7 @@
 /* create a timer */
 DECL_HANDLER(create_timer)
 {
-    size_t len = get_req_strlenW( req->name );
+    size_t len = get_req_strlenW( req, req->name );
     struct timer *timer;
 
     req->handle = -1;
@@ -178,7 +178,7 @@
 /* open a handle to a timer */
 DECL_HANDLER(open_timer)
 {
-    size_t len = get_req_strlenW( req->name );
+    size_t len = get_req_strlenW( req, req->name );
     req->handle = open_object( req->name, len, &timer_ops, req->access, req->inherit );
 }
 
diff --git a/server/trace.c b/server/trace.c
index 04c8172..9195146 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -19,7 +19,7 @@
 static void dump_ints( const int *ptr, int len )
 {
     fputc( '{', stderr );
-    while (len)
+    while (len > 0)
     {
         fprintf( stderr, "%d", *ptr++ );
         if (--len) fputc( ',', stderr );
@@ -30,7 +30,7 @@
 static void dump_uints( const int *ptr, int len )
 {
     fputc( '{', stderr );
-    while (len)
+    while (len > 0)
     {
         fprintf( stderr, "%08x", *ptr++ );
         if (--len) fputc( ',', stderr );
@@ -41,7 +41,7 @@
 static void dump_bytes( const unsigned char *ptr, int len )
 {
     fputc( '{', stderr );
-    while (len)
+    while (len > 0)
     {
         fprintf( stderr, "%02x", *ptr++ );
         if (--len) fputc( ',', stderr );
@@ -49,19 +49,26 @@
     fputc( '}', stderr );
 }
 
-static void dump_unicode_string( const WCHAR *str )
+static void dump_string( const void *req, const char *str )
 {
+    int len = get_req_strlen( req, str );
+    fprintf( stderr, "\"%.*s\"", len, str );
+}
+
+static void dump_unicode_string( const void *req, const WCHAR *str )
+{
+    size_t len = get_req_strlenW( req, str );
     fprintf( stderr, "L\"" );
-    dump_strW( str, strlenW(str), stderr, "\"\"" );
+    dump_strW( str, len, stderr, "\"\"" );
     fputc( '\"', stderr );
 }
 
-static void dump_path_t( const path_t *path )
+static void dump_path_t( const void *req, const path_t *path )
 {
-    dump_unicode_string( *path );
+    dump_unicode_string( req, *path );
 }
 
-static void dump_context( const CONTEXT *context )
+static void dump_context( const void *req, const CONTEXT *context )
 {
 #ifdef __i386__
     fprintf( stderr, "{flags=%08lx,eax=%08lx,ebx=%08lx,ecx=%08lx,edx=%08lx,esi=%08lx,edi=%08lx,"
@@ -79,7 +86,7 @@
 #endif
 }
 
-static void dump_exc_record( const EXCEPTION_RECORD *rec )
+static void dump_exc_record( const void *req, const EXCEPTION_RECORD *rec )
 {
     int i;
     fprintf( stderr, "{code=%lx,flags=%lx,rec=%p,addr=%p,params={",
@@ -93,13 +100,13 @@
     fputc( '}', stderr );
 }
 
-static void dump_debug_event_t( const debug_event_t *event )
+static void dump_debug_event_t( const void *req, const debug_event_t *event )
 {
     switch(event->code)
     {
     case EXCEPTION_DEBUG_EVENT:
         fprintf( stderr, "{exception," );
-        dump_exc_record( &event->info.exception.record );
+        dump_exc_record( req, &event->info.exception.record );
         fprintf( stderr, ",first=%d}", event->info.exception.first );
         break;
     case CREATE_THREAD_DEBUG_EVENT:
@@ -154,7 +161,8 @@
 
 static void dump_varargs_select_request( const struct select_request *req )
 {
-    dump_ints( req->handles, req->count );
+    int count = min( req->count, get_req_size( req, req->handles, sizeof(int) ));
+    dump_ints( req->handles, count );
 }
 
 static void dump_varargs_get_apcs_reply( const struct get_apcs_request *req )
@@ -172,29 +180,32 @@
 
 static void dump_varargs_read_process_memory_reply( const struct read_process_memory_request *req )
 {
-    int count = min( req->len, get_req_size( req->data, sizeof(int) ) );
+    int count = min( req->len, get_req_size( req, req->data, sizeof(int) ));
     dump_bytes( (unsigned char *)req->data, count * sizeof(int) );
 }
 
 static void dump_varargs_write_process_memory_request( const struct write_process_memory_request *req )
 {
-    int count = min( req->len, get_req_size( req->data, sizeof(int) ) );
+    int count = min( req->len, get_req_size( req, req->data, sizeof(int) ));
     dump_bytes( (unsigned char *)req->data, count * sizeof(int) );
 }
 
 static void dump_varargs_set_key_value_request( const struct set_key_value_request *req )
 {
-    dump_bytes( req->data, req->len );
+    int count = min( req->len, get_req_size( req, req->data, 1 ));
+    dump_bytes( req->data, count );
 }
 
 static void dump_varargs_get_key_value_reply( const struct get_key_value_request *req )
 {
-    dump_bytes( req->data, req->len );
+    int count = min( req->len, get_req_size( req, req->data, 1 ));
+    dump_bytes( req->data, count );
 }
 
 static void dump_varargs_enum_key_value_reply( const struct enum_key_value_request *req )
 {
-    dump_bytes( req->data, req->len );
+    int count = min( req->len, get_req_size( req, req->data, 1 ));
+    dump_bytes( req->data, count );
 }
 
 typedef void (*dump_func)( const void *req );
@@ -216,7 +227,8 @@
     fprintf( stderr, " event=%d,", req->event );
     fprintf( stderr, " cmd_show=%d,", req->cmd_show );
     fprintf( stderr, " env_ptr=%p,", req->env_ptr );
-    fprintf( stderr, " cmdline=\"%s\"", req->cmdline );
+    fprintf( stderr, " cmdline=" );
+    dump_string( req, req->cmdline );
 }
 
 static void dump_new_process_reply( const struct new_process_request *req )
@@ -259,7 +271,8 @@
     fprintf( stderr, " hstderr=%d,", req->hstderr );
     fprintf( stderr, " cmd_show=%d,", req->cmd_show );
     fprintf( stderr, " env_ptr=%p,", req->env_ptr );
-    fprintf( stderr, " cmdline=\"%s\"", req->cmdline );
+    fprintf( stderr, " cmdline=" );
+    dump_string( req, req->cmdline );
 }
 
 static void dump_init_process_done_request( const struct init_process_done_request *req )
@@ -481,7 +494,7 @@
     fprintf( stderr, " initial_state=%d,", req->initial_state );
     fprintf( stderr, " inherit=%d,", req->inherit );
     fprintf( stderr, " name=" );
-    dump_unicode_string( req->name );
+    dump_unicode_string( req, req->name );
 }
 
 static void dump_create_event_reply( const struct create_event_request *req )
@@ -500,7 +513,7 @@
     fprintf( stderr, " access=%08x,", req->access );
     fprintf( stderr, " inherit=%d,", req->inherit );
     fprintf( stderr, " name=" );
-    dump_unicode_string( req->name );
+    dump_unicode_string( req, req->name );
 }
 
 static void dump_open_event_reply( const struct open_event_request *req )
@@ -513,7 +526,7 @@
     fprintf( stderr, " owned=%d,", req->owned );
     fprintf( stderr, " inherit=%d,", req->inherit );
     fprintf( stderr, " name=" );
-    dump_unicode_string( req->name );
+    dump_unicode_string( req, req->name );
 }
 
 static void dump_create_mutex_reply( const struct create_mutex_request *req )
@@ -531,7 +544,7 @@
     fprintf( stderr, " access=%08x,", req->access );
     fprintf( stderr, " inherit=%d,", req->inherit );
     fprintf( stderr, " name=" );
-    dump_unicode_string( req->name );
+    dump_unicode_string( req, req->name );
 }
 
 static void dump_open_mutex_reply( const struct open_mutex_request *req )
@@ -545,7 +558,7 @@
     fprintf( stderr, " max=%08x,", req->max );
     fprintf( stderr, " inherit=%d,", req->inherit );
     fprintf( stderr, " name=" );
-    dump_unicode_string( req->name );
+    dump_unicode_string( req, req->name );
 }
 
 static void dump_create_semaphore_reply( const struct create_semaphore_request *req )
@@ -569,7 +582,7 @@
     fprintf( stderr, " access=%08x,", req->access );
     fprintf( stderr, " inherit=%d,", req->inherit );
     fprintf( stderr, " name=" );
-    dump_unicode_string( req->name );
+    dump_unicode_string( req, req->name );
 }
 
 static void dump_open_semaphore_reply( const struct open_semaphore_request *req )
@@ -584,7 +597,8 @@
     fprintf( stderr, " sharing=%08x,", req->sharing );
     fprintf( stderr, " create=%d,", req->create );
     fprintf( stderr, " attrs=%08x,", req->attrs );
-    fprintf( stderr, " name=\"%s\"", req->name );
+    fprintf( stderr, " name=" );
+    dump_string( req, req->name );
 }
 
 static void dump_create_file_reply( const struct create_file_request *req )
@@ -807,7 +821,8 @@
     fprintf( stderr, " mask=%d,", req->mask );
     fprintf( stderr, " cursor_size=%d,", req->cursor_size );
     fprintf( stderr, " cursor_visible=%d,", req->cursor_visible );
-    fprintf( stderr, " title=\"%s\"", req->title );
+    fprintf( stderr, " title=" );
+    dump_string( req, req->title );
 }
 
 static void dump_get_console_info_request( const struct get_console_info_request *req )
@@ -820,7 +835,8 @@
     fprintf( stderr, " cursor_size=%d,", req->cursor_size );
     fprintf( stderr, " cursor_visible=%d,", req->cursor_visible );
     fprintf( stderr, " pid=%d,", req->pid );
-    fprintf( stderr, " title=\"%s\"", req->title );
+    fprintf( stderr, " title=" );
+    dump_string( req, req->title );
 }
 
 static void dump_write_console_input_request( const struct write_console_input_request *req )
@@ -865,7 +881,7 @@
     fprintf( stderr, " inherit=%d,", req->inherit );
     fprintf( stderr, " file_handle=%d,", req->file_handle );
     fprintf( stderr, " name=" );
-    dump_unicode_string( req->name );
+    dump_unicode_string( req, req->name );
 }
 
 static void dump_create_mapping_reply( const struct create_mapping_request *req )
@@ -878,7 +894,7 @@
     fprintf( stderr, " access=%08x,", req->access );
     fprintf( stderr, " inherit=%d,", req->inherit );
     fprintf( stderr, " name=" );
-    dump_unicode_string( req->name );
+    dump_unicode_string( req, req->name );
 }
 
 static void dump_open_mapping_reply( const struct open_mapping_request *req )
@@ -944,17 +960,17 @@
     fprintf( stderr, " pid=%p,", req->pid );
     fprintf( stderr, " tid=%p,", req->tid );
     fprintf( stderr, " event=" );
-    dump_debug_event_t( &req->event );
+    dump_debug_event_t( req, &req->event );
 }
 
 static void dump_exception_event_request( const struct exception_event_request *req )
 {
     fprintf( stderr, " record=" );
-    dump_exc_record( &req->record );
+    dump_exc_record( req, &req->record );
     fprintf( stderr, "," );
     fprintf( stderr, " first=%d,", req->first );
     fprintf( stderr, " context=" );
-    dump_context( &req->context );
+    dump_context( req, &req->context );
 }
 
 static void dump_exception_event_reply( const struct exception_event_request *req )
@@ -1012,10 +1028,10 @@
     fprintf( stderr, " options=%08x,", req->options );
     fprintf( stderr, " modif=%ld,", req->modif );
     fprintf( stderr, " name=" );
-    dump_path_t( &req->name );
+    dump_path_t( req, &req->name );
     fprintf( stderr, "," );
     fprintf( stderr, " class=" );
-    dump_unicode_string( req->class );
+    dump_unicode_string( req, req->class );
 }
 
 static void dump_create_key_reply( const struct create_key_request *req )
@@ -1029,7 +1045,7 @@
     fprintf( stderr, " parent=%d,", req->parent );
     fprintf( stderr, " access=%08x,", req->access );
     fprintf( stderr, " name=" );
-    dump_path_t( &req->name );
+    dump_path_t( req, &req->name );
 }
 
 static void dump_open_key_reply( const struct open_key_request *req )
@@ -1041,7 +1057,7 @@
 {
     fprintf( stderr, " hkey=%d,", req->hkey );
     fprintf( stderr, " name=" );
-    dump_path_t( &req->name );
+    dump_path_t( req, &req->name );
 }
 
 static void dump_close_key_request( const struct close_key_request *req )
@@ -1059,10 +1075,10 @@
 {
     fprintf( stderr, " modif=%ld,", req->modif );
     fprintf( stderr, " name=" );
-    dump_path_t( &req->name );
+    dump_path_t( req, &req->name );
     fprintf( stderr, "," );
     fprintf( stderr, " class=" );
-    dump_unicode_string( req->class );
+    dump_unicode_string( req, req->class );
 }
 
 static void dump_query_key_info_request( const struct query_key_info_request *req )
@@ -1080,10 +1096,10 @@
     fprintf( stderr, " max_data=%d,", req->max_data );
     fprintf( stderr, " modif=%ld,", req->modif );
     fprintf( stderr, " name=" );
-    dump_path_t( &req->name );
+    dump_path_t( req, &req->name );
     fprintf( stderr, "," );
     fprintf( stderr, " class=" );
-    dump_unicode_string( req->class );
+    dump_unicode_string( req, req->class );
 }
 
 static void dump_set_key_value_request( const struct set_key_value_request *req )
@@ -1092,7 +1108,7 @@
     fprintf( stderr, " type=%d,", req->type );
     fprintf( stderr, " len=%d,", req->len );
     fprintf( stderr, " name=" );
-    dump_path_t( &req->name );
+    dump_path_t( req, &req->name );
     fprintf( stderr, "," );
     fprintf( stderr, " data=" );
     dump_varargs_set_key_value_request( req );
@@ -1102,7 +1118,7 @@
 {
     fprintf( stderr, " hkey=%d,", req->hkey );
     fprintf( stderr, " name=" );
-    dump_unicode_string( req->name );
+    dump_unicode_string( req, req->name );
 }
 
 static void dump_get_key_value_reply( const struct get_key_value_request *req )
@@ -1124,7 +1140,7 @@
     fprintf( stderr, " type=%d,", req->type );
     fprintf( stderr, " len=%d,", req->len );
     fprintf( stderr, " name=" );
-    dump_path_t( &req->name );
+    dump_path_t( req, &req->name );
     fprintf( stderr, "," );
     fprintf( stderr, " data=" );
     dump_varargs_enum_key_value_reply( req );
@@ -1134,7 +1150,7 @@
 {
     fprintf( stderr, " hkey=%d,", req->hkey );
     fprintf( stderr, " name=" );
-    dump_path_t( &req->name );
+    dump_path_t( req, &req->name );
 }
 
 static void dump_load_registry_request( const struct load_registry_request *req )
@@ -1142,7 +1158,7 @@
     fprintf( stderr, " hkey=%d,", req->hkey );
     fprintf( stderr, " file=%d,", req->file );
     fprintf( stderr, " name=" );
-    dump_path_t( &req->name );
+    dump_path_t( req, &req->name );
 }
 
 static void dump_save_registry_request( const struct save_registry_request *req )
@@ -1163,7 +1179,7 @@
     fprintf( stderr, " inherit=%d,", req->inherit );
     fprintf( stderr, " manual=%d,", req->manual );
     fprintf( stderr, " name=" );
-    dump_unicode_string( req->name );
+    dump_unicode_string( req, req->name );
 }
 
 static void dump_create_timer_reply( const struct create_timer_request *req )
@@ -1176,7 +1192,7 @@
     fprintf( stderr, " access=%08x,", req->access );
     fprintf( stderr, " inherit=%d,", req->inherit );
     fprintf( stderr, " name=" );
-    dump_unicode_string( req->name );
+    dump_unicode_string( req, req->name );
 }
 
 static void dump_open_timer_reply( const struct open_timer_request *req )
@@ -1208,7 +1224,7 @@
 static void dump_get_thread_context_reply( const struct get_thread_context_request *req )
 {
     fprintf( stderr, " context=" );
-    dump_context( &req->context );
+    dump_context( req, &req->context );
 }
 
 static void dump_set_thread_context_request( const struct set_thread_context_request *req )
@@ -1216,7 +1232,7 @@
     fprintf( stderr, " handle=%d,", req->handle );
     fprintf( stderr, " flags=%08x,", req->flags );
     fprintf( stderr, " context=" );
-    dump_context( &req->context );
+    dump_context( req, &req->context );
 }
 
 static void dump_get_selector_entry_request( const struct get_selector_entry_request *req )
@@ -1235,7 +1251,7 @@
 static void dump_add_atom_request( const struct add_atom_request *req )
 {
     fprintf( stderr, " name=" );
-    dump_unicode_string( req->name );
+    dump_unicode_string( req, req->name );
 }
 
 static void dump_add_atom_reply( const struct add_atom_request *req )
@@ -1251,7 +1267,7 @@
 static void dump_find_atom_request( const struct find_atom_request *req )
 {
     fprintf( stderr, " name=" );
-    dump_unicode_string( req->name );
+    dump_unicode_string( req, req->name );
 }
 
 static void dump_find_atom_reply( const struct find_atom_request *req )
@@ -1268,7 +1284,7 @@
 {
     fprintf( stderr, " count=%d,", req->count );
     fprintf( stderr, " name=" );
-    dump_unicode_string( req->name );
+    dump_unicode_string( req, req->name );
 }
 
 static const dump_func req_dumpers[REQ_NB_REQUESTS] = {