Zebediah Figura z.figura12@gmail.com writes:
- LIST_FOR_EACH_ENTRY( process, &process_list, struct process, entry )
- {
struct process_info *process_info;
struct process_dll *exe = get_process_exe_module( process );
pos = align_offset( pos, TYPE_ALIGNMENT(struct process_info) );
process_info = (struct process_info *)(buffer + pos);
process_info->name_len = exe->namelen;
process_info->thread_count = process->running_threads;
process_info->priority = process->priority;
process_info->pid = process->id;
process_info->parent_pid = process->parent_id;
process_info->handle_count = get_handle_table_count(process);
process_info->unix_pid = process->unix_pid;
pos += sizeof(*process_info);
memcpy( buffer + pos, exe->filename, exe->namelen );
pos += exe->namelen;
pos = align_offset( pos, TYPE_ALIGNMENT(struct thread_info) );
You also need to fill the alignment with zeros to avoid sending uninitialized data.