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) */