diff options
author | Antenore Gatta <antenore@simbiosi.org> | 2015-06-22 00:13:31 +0300 |
---|---|---|
committer | Antenore Gatta <antenore@simbiosi.org> | 2015-06-22 00:13:31 +0300 |
commit | 5c3be411127ef06bf82584ac253f8b2a49cdc362 (patch) | |
tree | b49f59469fd1dc21cdd81c8b2a1e5045ba65e8ce | |
parent | 6691d320660f4b555452f52d48af4bbdc36af3d0 (diff) | |
parent | 8450350b87b317224eb4df191f084e1049fe3589 (diff) |
Merge pull request #589 from FreeRDP/preexec
coredump when precommand is not quoted. Resolve #520
-rw-r--r-- | remmina/src/remmina_preexec.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/remmina/src/remmina_preexec.c b/remmina/src/remmina_preexec.c index 9d73662b7..42a208547 100644 --- a/remmina/src/remmina_preexec.c +++ b/remmina/src/remmina_preexec.c @@ -64,10 +64,9 @@ GtkDialog* remmina_preexec_new(RemminaFile* remminafile) GError *error = NULL; char **argv; char const *cmd = NULL; - //gboolean retval; GPid child_pid; - cmd = remmina_file_get_string(remminafile, "precommand"); + cmd = g_shell_quote(remmina_file_get_string(remminafile, "precommand")); if (cmd) { pcspinner = g_new(PCon_Spinner, 1); @@ -76,7 +75,6 @@ GtkDialog* remmina_preexec_new(RemminaFile* remminafile) pcspinner->label_pleasewait = GTK_LABEL(GET_OBJECT("label_pleasewait")); pcspinner->spinner = GTK_WIDGET(GET_OBJECT("spinner")); pcspinner->button_cancel = GTK_BUTTON(GET_OBJECT("button_cancel")); - /* gtk_window_set_transient_for(GTK_WINDOW(dialog), parent_window); */ /* Connect signals */ gtk_builder_connect_signals(builder, NULL); @@ -95,14 +93,14 @@ GtkDialog* remmina_preexec_new(RemminaFile* remminafile) /* Consider using G_SPAWN_SEARCH_PATH_FROM_ENVP (from glib 2.38)*/ g_spawn_async( NULL, // cwd - argv, // argv - NULL, // envp - G_SPAWN_SEARCH_PATH | - G_SPAWN_DO_NOT_REAP_CHILD, // flags - NULL, // child_setup - NULL, // child_setup user data - &child_pid, // exit status - &error); // error + argv, // argv + NULL, // envp + G_SPAWN_SEARCH_PATH | + G_SPAWN_DO_NOT_REAP_CHILD, // flags + NULL, // child_setup + NULL, // child_setup user data + &child_pid, // exit status + &error); // error if (!error) { gtk_spinner_start (GTK_SPINNER (pcspinner->spinner)); |