Package: network-manager-openvpn Version: 0.3.2svn2855-1 Severity: normal
When attempting to connect to an openvpn VPN using network-manager-openvpn-gnome, and using connection type "x509 certificates", and additionally attempting to use a key which is encrypted, and is protected by a password which contains spaces, I get the following error: Could not start the VPN connection 'HRCSB' due to connection error. The VPN login failed because the VPN program could not connect to the VPN server. tcpdump indicates that no attempt to make a connection to the remote server is made. When I remove the key from the certificate, or change the password to a single word, the connection succeeds - no other options need be changed. As a test, I set the key pass to nothing --> connection succeeded I set the key pass to "foobar" --> connection succeeded I set the key pass to "foo bar" --> connection failed I've attached a patch which I believe will address the issue. -davidc -- System Information: Debian Release: lenny/sid APT prefers testing APT policy: (500, 'testing') Architecture: i386 (i686) Kernel: Linux 2.6.22-3-686 (SMP w/1 CPU core) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages network-manager-openvpn depends on: ii libc6 2.7-10 GNU C Library: Shared libraries ii libdbus-1-3 1.2.1-2 simple interprocess messaging syst ii libdbus-glib-1-2 0.74-2 simple interprocess messaging syst ii libglib2.0-0 2.16.3-2 The GLib library of C routines ii libnm-util0 0.6.6-1 network management framework (shar ii openvpn 2.1~rc7-1 virtual private network daemon network-manager-openvpn recommends no packages. -- no debconf information
--- nm-openvpn-service.c 2006-11-01 11:33:28.000000000 -0500 +++ /home/david/nm-openvpn-service.c 2008-05-15 01:05:08.000000000 -0400 @@ -370,8 +370,8 @@ if ( (io_data->username != NULL) && (io_data->password != NULL) ) { gsize written; - char *buf = g_strdup_printf ("username \"%s\" %s\n" - "password \"%s\" %s\n", + char *buf = g_strdup_printf ("username \"%s\" \"%s\"\n" + "password \"%s\" \"%s\"\n", auth, io_data->username, auth, io_data->password); /* Will always write everything in blocking channels (on success) */ @@ -382,7 +382,7 @@ } else if ( strcmp (auth, "Private Key") == 0 ) { if ( io_data->certpass != NULL ) { gsize written; - char *buf = g_strdup_printf ("password \"%s\" %s\n", + char *buf = g_strdup_printf ("password \"%s\" \"%s\"\n", auth, io_data->certpass); // printf("1: sending: %s\n", buf); /* Will always write everything in blocking channels (on success) */