On Wed, Oct 08, 2014 at 01:23:06PM +0200, Fabiano Fidêncio wrote: > From: Dietmar Maurer <dietmar@xxxxxxxxxxx> > > --- > No changes since v2 > --- > gtk/spice-session-priv.h | 2 ++ > gtk/spice-session.c | 63 +++++++++++++++++++++++++++++++++++++++++++++--- > 2 files changed, 61 insertions(+), 4 deletions(-) > > diff --git a/gtk/spice-session-priv.h b/gtk/spice-session-priv.h > index 4b2c151..da43866 100644 > --- a/gtk/spice-session-priv.h > +++ b/gtk/spice-session-priv.h > @@ -45,6 +45,7 @@ struct _SpiceSessionPrivate { > char *host; > char *port; > char *tls_port; > + char *username; > char *password; > char *ca_file; > char *ciphers; > @@ -146,6 +147,7 @@ void spice_session_set_migration_state(SpiceSession *session, SpiceSessionMigrat > void spice_session_set_port(SpiceSession *session, int port, gboolean tls); > void spice_session_get_pubkey(SpiceSession *session, guint8 **pubkey, guint *size); > guint spice_session_get_verify(SpiceSession *session); > +const gchar* spice_session_get_username(SpiceSession *session); > const gchar* spice_session_get_password(SpiceSession *session); > const gchar* spice_session_get_host(SpiceSession *session); > const gchar* spice_session_get_cert_subject(SpiceSession *session); > diff --git a/gtk/spice-session.c b/gtk/spice-session.c > index 49afc97..17c18f9 100644 > --- a/gtk/spice-session.c > +++ b/gtk/spice-session.c > @@ -111,7 +111,8 @@ enum { > PROP_CA, > PROP_PROXY, > PROP_SECURE_CHANNELS, > - PROP_SHARED_DIR > + PROP_SHARED_DIR, > + PROP_USERNAME > }; > > /* signals */ > @@ -217,6 +218,7 @@ spice_session_finalize(GObject *gobject) > g_free(s->host); > g_free(s->port); > g_free(s->tls_port); > + g_free(s->username); > g_free(s->password); > g_free(s->ca_file); > g_free(s->ciphers); > @@ -262,11 +264,12 @@ static int spice_uri_create(SpiceSession *session, char *dest, int len) > static int spice_parse_uri(SpiceSession *session, const char *original_uri) > { > SpiceSessionPrivate *s = session->priv; > - gchar *host = NULL, *port = NULL, *tls_port = NULL, *uri = NULL, *password = NULL; > + gchar *host = NULL, *port = NULL, *tls_port = NULL, *uri = NULL, *username = NULL, *password = NULL; > gchar *path = NULL; > gchar *unescaped_path = NULL; > gchar *authority = NULL; > gchar *query = NULL; > + gchar *tmp = NULL; > > g_return_val_if_fail(original_uri != NULL, -1); > > @@ -281,6 +284,22 @@ static int spice_parse_uri(SpiceSession *session, const char *original_uri) > goto fail; > } > authority = uri + strlen(URI_SCHEME_SPICE); > + > + tmp = strchr(authority, '@'); > + if (tmp) { > + gchar *buffer = g_strndup(authority, tmp - authority); > + if (strstr(buffer, "%40") == NULL) { You don't need to explicitly test for %40 here, just do something similar to what is done for 'authority' tmp = strchr(authority, '@'); if (tmp) { *tmp == '\0'; username = g_uri_unescape_string(authority, NULL); authority = ++tmp; tmp = NULL; } Christophe
Attachment:
pgpa3u8NFlAHF.pgp
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel