diff options
Diffstat (limited to 'capchild/capture_sync.c')
-rw-r--r-- | capchild/capture_sync.c | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/capchild/capture_sync.c b/capchild/capture_sync.c index c3bd19cc5e..ece0ae00ad 100644 --- a/capchild/capture_sync.c +++ b/capchild/capture_sync.c @@ -206,6 +206,7 @@ sync_pipe_start(capture_options *capture_opts, capture_session *cap_session, inf PROCESS_INFORMATION pi; char control_id[ARGV_NUMBER_LEN]; gchar *signal_pipe_name; + char *errmsg; #else char errmsg[1024+1]; int sync_pipe[2]; /* pipe used to send messages from child to parent */ @@ -433,8 +434,9 @@ sync_pipe_start(capture_options *capture_opts, capture_session *cap_session, inf /* (increase this value if you have trouble while fast capture file switches) */ if (! CreatePipe(&sync_pipe_read, &sync_pipe_write, &sa, 5120)) { /* Couldn't create the pipe between parent and child. */ - report_failure("Couldn't create sync pipe: %s", - win32strerror(GetLastError())); + errmsg = win32strerror(GetLastError()); + report_failure("Couldn't create sync pipe: %s", errmsg); + g_free(errmsg); free_argv(argv, argc); return FALSE; } @@ -464,8 +466,9 @@ sync_pipe_start(capture_options *capture_opts, capture_session *cap_session, inf if (signal_pipe == INVALID_HANDLE_VALUE) { /* Couldn't create the signal pipe between parent and child. */ - report_failure("Couldn't create signal pipe: %s", - win32strerror(GetLastError())); + errmsg = win32strerror(GetLastError()); + report_failure("Couldn't create signal pipe: %s", errmsg); + g_free(errmsg); ws_close(sync_pipe_read_fd); /* Should close sync_pipe_read */ CloseHandle(sync_pipe_write); free_argv(argv, argc); @@ -523,8 +526,10 @@ sync_pipe_start(capture_options *capture_opts, capture_session *cap_session, inf /* call dumpcap */ if(!win32_create_process(argv[0], args->str, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi)) { + errmsg = win32strerror(GetLastError()); report_failure("Couldn't run %s in child process: %s", - args->str, win32strerror(GetLastError())); + args->str, errmsg); + g_free(errmsg); ws_close(sync_pipe_read_fd); /* Should close sync_pipe_read */ CloseHandle(sync_pipe_write); CloseHandle(signal_pipe); @@ -647,6 +652,7 @@ sync_pipe_open_command(char* const argv[], int *data_read_fd, STARTUPINFO si; PROCESS_INFORMATION pi; int i; + char *errmsg; #else char errmsg[1024+1]; int sync_pipe[2]; /* pipe used to send messages from child to parent */ @@ -675,8 +681,9 @@ sync_pipe_open_command(char* const argv[], int *data_read_fd, /* (increase this value if you have trouble while fast capture file switches) */ if (! CreatePipe(&sync_pipe[PIPE_READ], &sync_pipe[PIPE_WRITE], &sa, 5120)) { /* Couldn't create the message pipe between parent and child. */ - *msg = g_strdup_printf("Couldn't create sync pipe: %s", - win32strerror(GetLastError())); + errmsg = win32strerror(GetLastError()); + *msg = g_strdup_printf("Couldn't create sync pipe: %s", errmsg); + g_free(errmsg); return -1; } @@ -699,8 +706,9 @@ sync_pipe_open_command(char* const argv[], int *data_read_fd, /* (increase this value if you have trouble while fast capture file switches) */ if (! CreatePipe(&data_pipe[PIPE_READ], &data_pipe[PIPE_WRITE], &sa, 5120)) { /* Couldn't create the message pipe between parent and child. */ - *msg = g_strdup_printf("Couldn't create data pipe: %s", - win32strerror(GetLastError())); + errmsg = win32strerror(GetLastError()); + *msg = g_strdup_printf("Couldn't create data pipe: %s", errmsg); + g_free(errmsg); ws_close(*message_read_fd); /* Should close sync_pipe[PIPE_READ] */ CloseHandle(sync_pipe[PIPE_WRITE]); return -1; @@ -752,8 +760,10 @@ sync_pipe_open_command(char* const argv[], int *data_read_fd, /* call dumpcap */ if(!win32_create_process(argv[0], args->str, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi)) { + errmsg = win32strerror(GetLastError()); *msg = g_strdup_printf("Couldn't run %s in child process: %s", - args->str, win32strerror(GetLastError())); + args->str, errmsg); + g_free(errmsg); ws_close(*data_read_fd); /* Should close data_pipe[PIPE_READ] */ CloseHandle(data_pipe[PIPE_WRITE]); ws_close(*message_read_fd); /* Should close sync_pipe[PIPE_READ] */ |