This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository libx2goclient. commit 8e661a22516685a399512dd975a88df4bafed331 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Sep 30 03:54:17 2021 +0200 src/x2goclient-network-ssh.c: reference X2GoClientNetwork:options property in x2goclient_network_ssh_connect () documentation, since no X2GoClientNetworkSSH:options property exists, but also make clear that this class/function expects an X2GoClientNetworkOptionsSSH instance being bound to the property. Make sure to check for that in x2goclient_network_ssh_parent_connect (). --- src/x2goclient-network-ssh.c | 36 ++++++++++++++++++++++++------------ src/x2goclient-network-ssh.h | 2 ++ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/x2goclient-network-ssh.c b/src/x2goclient-network-ssh.c index 2c34dba..24ebd26 100644 --- a/src/x2goclient-network-ssh.c +++ b/src/x2goclient-network-ssh.c @@ -1080,8 +1080,10 @@ static gboolean x2goclient_network_ssh_kill_subprocesses (X2GoClientNetworkSSH * * #X2GoClientNetwork:connected property. * * The connection parameters are looked up from the - * #X2GoClientNetwork:socket, #X2GoClientNetworkSSH:options and - * #X2GoClientNetwork:session-path properties. + * #X2GoClientNetwork:socket, #X2GoClientNetwork:options and + * #X2GoClientNetwork:session-path properties. It is expected (and checked) + * that a #X2GoClientNetworkOptionsSSH instance is bound to the + * #X2GoClientNetwork:options property. * * Currently, the control socket path is hardcoded to * <filename><varname>session-path</varname>/ssh/control</filename>. @@ -1245,21 +1247,31 @@ static gboolean x2goclient_network_ssh_parent_connect (const gpointer ptr, GErro g_object_get (G_OBJECT (self), "options", &options, NULL); if (options) { - /* Get string-array representation. */ - GPtrArray *options_arr = x2goclient_network_options_ssh_to_array (options); - - if (!(options_arr)) { - g_set_error_literal (gerr, X2GOCLIENT_NETWORK_SSH_ERROR, X2GOCLIENT_NETWORK_SSH_ERROR_CONNECT_OPTIONS_INVALID, "Unable to convert options structure to an array, can't connect."); + /* + * Check if it's actually an X2GoClientOptionsSSH instance - it might not + * be. + */ + if (!(X2GOCLIENT_IS_NETWORK_OPTIONS_SSH (options))) { + g_set_error_literal (gerr, X2GOCLIENT_NETWORK_SSH_ERROR, X2GOCLIENT_NETWORK_SSH_ERROR_CONNECT_OPTIONS_INVALID, "Options structure is not of expected type X2GoClientNetworkOptionsSSH."); ret = FALSE; } else { - /* Add each element to command. */ - for (size_t i = 0; i < options_arr->len; ++i) { - g_ptr_array_add (ssh_cmd, g_strdup ("-o")); - g_ptr_array_add (ssh_cmd, g_strdup ((gchar *)g_ptr_array_index (options_arr, i))); + /* Get string-array representation. */ + GPtrArray *options_arr = x2goclient_network_options_ssh_to_array (options); + + if (!(options_arr)) { + g_set_error_literal (gerr, X2GOCLIENT_NETWORK_SSH_ERROR, X2GOCLIENT_NETWORK_SSH_ERROR_CONNECT_OPTIONS_INVALID, "Unable to convert options structure to an array, can't connect."); + ret = FALSE; } + else { + /* Add each element to command. */ + for (size_t i = 0; i < options_arr->len; ++i) { + g_ptr_array_add (ssh_cmd, g_strdup ("-o")); + g_ptr_array_add (ssh_cmd, g_strdup ((gchar *)g_ptr_array_index (options_arr, i))); + } - g_ptr_array_unref (options_arr); + g_ptr_array_unref (options_arr); + } } } diff --git a/src/x2goclient-network-ssh.h b/src/x2goclient-network-ssh.h index 05150ca..2650a95 100644 --- a/src/x2goclient-network-ssh.h +++ b/src/x2goclient-network-ssh.h @@ -91,6 +91,8 @@ X2GoClientNetworkSSH* x2goclient_network_ssh_new (const gchar * const session_pa * address type in * connect function. * @X2GOCLIENT_NETWORK_SSH_ERROR_CONNECT_OPTIONS_INVALID: options structure + * was not of the + * expected type or * could not be parsed * into string array in * connect function. -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/libx2goclient.git