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

Reply via email to