Package: openswan
Version: 1:2.6.23+dfsg-1
Severity: normal
Tags: patch

When the debconf options to use an existing certificate are selected,
postinst fails with the following error message:

Error:  or  already exists.
Please remove them first an re-run dpkg-reconfigure to create a new keypair.

I believe this is due to the uninitialized use of $newcertfile and
$newkeyfile on line 168 (in combination with the unusual behavior of bash
to return success for -e when given an empty variable).  I have attached
a patch which corrects this behavior by checking for the existence of the
filenames which will be used.

Cheers,
Kevin


-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.32.3-kevinoid1 (SMP w/2 CPU cores; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages openswan depends on:
ii  bind9-host [host]      1:9.6.1.dfsg.P3-1 Version of 'host' bundled with BIN
ii  bsdmainutils           8.0.8             collection of more utilities from 
ii  debconf [debconf-2.0]  1.5.28            Debian configuration management sy
ii  debianutils            3.2.2             Miscellaneous utilities specific t
ii  iproute                20091226-1        networking and traffic control too
ii  libc6                  2.10.2-6          Embedded GNU C Library: Shared lib
ii  libcurl3               7.19.7-1          Multi-protocol file transfer libra
ii  libgmp3c2              2:4.3.2+dfsg-1    Multiprecision arithmetic library
ii  libldap-2.4-2          2.4.17-2.1        OpenLDAP libraries
ii  libpam0g               1.1.1-2           Pluggable Authentication Modules l
ii  openssl                0.9.8k-8          Secure Socket Layer (SSL) binary a

openswan recommends no packages.

Versions of packages openswan suggests:
ii  curl                          7.19.7-1   Get a file from an HTTP, HTTPS or 
pn  openswan-modules-source | lin <none>     (no description available)

-- debconf information excluded
diff -ru openswan-2.6.23+dfsg.orig/debian/openswan.postinst openswan-2.6.23+dfsg/debian/openswan.postinst
--- openswan-2.6.23+dfsg.orig/debian/openswan.postinst	2010-03-06 19:03:00.896842017 -0700
+++ openswan-2.6.23+dfsg/debian/openswan.postinst	2010-03-06 19:14:56.766548908 -0700
@@ -168,26 +168,27 @@
         else
 	    db_get openswan/existing_x509_certificate
        	    if [ "$RET" = "true" ]; then
-                if [ -e $newcertfile -o -e $newkeyfile ]; then
-                     echo "Error: $newcertfile or $newkeyfile already exists."
-                     echo "Please remove them first an re-run dpkg-reconfigure to create a new keypair."
-                else
-       			# existing certificate - use it
-       			db_get openswan/existing_x509_certificate_filename
-       			certfile=$RET
-       			db_get openswan/existing_x509_key_filename
-       			keyfile=$RET
-       			if [ ! -r $certfile ] || [ ! -r $keyfile ]; then
-       			    echo "Either the certificate or the key file could not be read !"
-       			else
-                            cp "$certfile" /etc/ipsec.d/certs
-       			    umask 077
-			    cp "$keyfile" "/etc/ipsec.d/private"
-                            newkeyfile="/etc/ipsec.d/private/`basename $keyfile`"
-			    chmod 0600 "$newkeyfile"
-			    insert_private_key_filename "$newkeyfile"
-			    echo "Successfully extracted RSA key from existing x509 certificate."
-			fi
+		# existing certificate - use it
+		db_get openswan/existing_x509_certificate_filename
+		certfile=$RET
+		db_get openswan/existing_x509_key_filename
+		keyfile=$RET
+
+		newkeyfile="/etc/ipsec.d/private/$(basename "$keyfile")"
+		newcertfile="/etc/ipsec.d/private/$(basename "$certfile")"
+
+		if [ ! -r $certfile ] || [ ! -r $keyfile ]; then
+		    echo "Either the certificate or the key file could not be read !"
+		elif [ -e $newcertfile -o -e $newkeyfile ]; then
+		    echo "Error: $newcertfile or $newkeyfile already exists."
+		    echo "Please remove them first an re-run dpkg-reconfigure to create a new keypair."
+		else
+		    cp "$certfile" /etc/ipsec.d/certs
+		    umask 077
+		    cp "$keyfile" /etc/ipsec.d/private
+		    chmod 0600 "$newkeyfile"
+		    insert_private_key_filename "$newkeyfile"
+		    echo "Successfully extracted RSA key from existing x509 certificate."
 		fi
             fi
 	fi

Reply via email to