[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [win-pv-devel] [PATCH 5/6] Launch monitored process without command line



> -----Original Message-----
> From: win-pv-devel [mailto:win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx] On
> Behalf Of owen.smith@xxxxxxxxxx
> Sent: 24 July 2017 14:36
> To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> Cc: Owen Smith <owen.smith@xxxxxxxxxx>
> Subject: [win-pv-devel] [PATCH 5/6] Launch monitored process without
> command line
> 
> From: Owen Smith <owen.smith@xxxxxxxxxx>
> 
> Changed tty to open named pipe by name, not command line argument
> 
> Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>

Reviewed-by: Paul Durrant <paul.durrant@xxxxxxxxxx>

> ---
>  src/monitor/monitor.c | 31 +++----------------------------
>  src/tty/tty.c         | 14 ++++++--------
>  2 files changed, 9 insertions(+), 36 deletions(-)
> 
> diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c
> index 9ddce52..6e1e85f 100644
> --- a/src/monitor/monitor.c
> +++ b/src/monitor/monitor.c
> @@ -586,8 +586,6 @@ MonitorThread(
>      )
>  {
>      PMONITOR_CONTEXT    Context = &MonitorContext;
> -    DWORD               CommandLineLength;
> -    PTCHAR              CommandLine;
>      PROCESS_INFORMATION ProcessInfo;
>      STARTUPINFO         StartupInfo;
>      BOOL                Success;
> @@ -599,32 +597,16 @@ MonitorThread(
> 
>      Log("====>");
> 
> -    CommandLineLength = (DWORD)(_tcslen(Context->Executable) +
> -                                2 +
> -                                _tcslen(Context->DevicePath) +
> -                                2) * sizeof (TCHAR);
> -
> -    CommandLine = calloc(1, CommandLineLength);
> -
> -    if (CommandLine == NULL)
> -        goto fail1;
> -
> -    (VOID) _sntprintf(CommandLine,
> -                      CommandLineLength - 1,
> -                      TEXT("%s \"%s\""),
> -                      Context->Executable,
> -                      Context->DevicePath);
> -
>  again:
>      ZeroMemory(&ProcessInfo, sizeof (ProcessInfo));
>      ZeroMemory(&StartupInfo, sizeof (StartupInfo));
>      StartupInfo.cb = sizeof (StartupInfo);
> 
> -    Log("Executing: %s", CommandLine);
> +    Log("Executing: %s", Context->Executable);
> 
>  #pragma warning(suppress:6053) // CommandLine might not be NUL-
> terminated
>      Success = CreateProcess(NULL,
> -                            CommandLine,
> +                            Context->Executable,
>                              NULL,
>                              NULL,
>                              FALSE,
> @@ -635,7 +617,7 @@ again:
>                              &StartupInfo,
>                              &ProcessInfo);
>      if (!Success)
> -        goto fail2;
> +        goto fail1;
> 
>      Handle[0] = Context->MonitorEvent;
>      Handle[1] = ProcessInfo.hProcess;
> @@ -667,17 +649,10 @@ again:
> 
>  //#undef WAIT_OBJECT_1
> 
> -    free(CommandLine);
> -
>      Log("<====");
> 
>      return 0;
> 
> -fail2:
> -    Log("fail2");
> -
> -    free(CommandLine);
> -
>  fail1:
>      Error = GetLastError();
> 
> diff --git a/src/tty/tty.c b/src/tty/tty.c
> index c47634c..94d4f65 100644
> --- a/src/tty/tty.c
> +++ b/src/tty/tty.c
> @@ -39,6 +39,7 @@ typedef struct _TTY_STREAM {
>      HANDLE  Write;
>  } TTY_STREAM, *PTTY_STREAM;
> 
> +#define PIPE_NAME TEXT("\\\\.\\pipe\\xencons")
>  #define MAXIMUM_BUFFER_SIZE 1024
> 
>  typedef struct _TTY_CONTEXT {
> @@ -393,18 +394,15 @@ _tmain(
>      )
>  {
>      PTTY_CONTEXT        Context = &TtyContext;
> -    PTCHAR              DeviceName;
>      SECURITY_ATTRIBUTES Attributes;
>      HANDLE              Handle[3];
>      DWORD               Index;
>      BOOL                Success;
> 
> -    if (argc != 2)
> -        ExitProcess(1);
> -
> -    DeviceName = argv[1];
> +    UNREFERENCED_PARAMETER(argc);
> +    UNREFERENCED_PARAMETER(argv);
> 
> -    Context->Device.Read = CreateFile(DeviceName,
> +    Context->Device.Read = CreateFile(PIPE_NAME,
>                                        GENERIC_READ,
>                                        FILE_SHARE_WRITE,
>                                        NULL,
> @@ -415,7 +413,7 @@ _tmain(
>      if (Context->Device.Read == INVALID_HANDLE_VALUE)
>          ExitProcess(1);
> 
> -    Context->Device.Write = CreateFile(DeviceName,
> +    Context->Device.Write = CreateFile(PIPE_NAME,
>                                         GENERIC_WRITE,
>                                         FILE_SHARE_READ | FILE_SHARE_WRITE,
>                                         NULL,
> @@ -423,7 +421,7 @@ _tmain(
>                                         FILE_ATTRIBUTE_NORMAL,
>                                         NULL);
> 
> -    if (Context->Device.Read == INVALID_HANDLE_VALUE)
> +    if (Context->Device.Write == INVALID_HANDLE_VALUE)
>          ExitProcess(1);
> 
>      Success = GetCredentials();
> --
> 2.8.3
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.