diff --git a/src/tty/ntapi_tty_create_session.c b/src/tty/ntapi_tty_create_session.c index bac3a20..a5452d2 100644 --- a/src/tty/ntapi_tty_create_session.c +++ b/src/tty/ntapi_tty_create_session.c @@ -42,6 +42,7 @@ int32_t __stdcall __ntapi_tty_create_session( nt_iosb iosb; nt_port_attr port_attr; + nt_runtime_data * rtdata; nt_runtime_data ssattr; nt_runtime_data_block rtblock; nt_create_process_params params; @@ -56,6 +57,7 @@ int32_t __stdcall __ntapi_tty_create_session( /* init */ __internals = __ntapi_internals(); + rtdata = __internals->rtdata; __ntapi->tt_aligned_block_memset( &port_attr,0,sizeof(port_attr)); @@ -174,6 +176,23 @@ int32_t __stdcall __ntapi_tty_create_session( NT_EVENT_NOT_SIGNALED))) return status; + /* server chain */ + if (rtdata->srv_type) { + ssattr.ppid_type = rtdata->srv_type; + ssattr.ppid_subtype = rtdata->srv_subtype; + + ssattr.ppid_keys[0] = rtdata->srv_keys[0]; + ssattr.ppid_keys[1] = rtdata->srv_keys[1]; + ssattr.ppid_keys[2] = rtdata->srv_keys[2]; + ssattr.ppid_keys[3] = rtdata->srv_keys[3]; + ssattr.ppid_keys[4] = rtdata->srv_keys[4]; + ssattr.ppid_keys[5] = rtdata->srv_keys[5]; + + __ntapi->tt_guid_copy( + &ssattr.ppid_guid, + &rtdata->srv_guid); + } + /* create subsystem process */ rtblock.addr = &ssattr; rtblock.size = sizeof(ssattr);