[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#68804: mount(8) and losetup(8) do not support int. kernel (PATCH)



Package: mount
Version: 2.10f-5.1

Debian Woody for PowerPC.  Potato seems to share the same mount
package so this is a bug in 'frozen' FWIW.  Bug applies to all
architectures AFAICS.

The 'mount' and 'losetup' commands do not work properly with the
international kernel.  If I compile Serpent into the kernel, and do

# losetup -e serpent /dev/loop0 <file>

I get "Unsupported encryption type serpent".

The first problem is that the binary package 2.10f-5.1 does not
support Serpent--doing a 'strings /sbin/losetup | grep serpent' 
returns nothing.  This is very odd since the source package for the
same version has Serpent support (it's added by the .diff.gz file). 
It appears that the PowerPC version of the package (at least) was
miscompiled. 

Once I started hacking around in the source, I found that support was
missing in the password prompt code for Serpent and several other
ciphers.  I ended up getting the latest util-linux patch from the
kerneli tree and applying it by hand (only the password stuff was
missing as it ended up).

The code as it's distributed also depends on an up-to-date
<linux/loop.h> to compile.  The version distributed with libc6
2.1.3-10 is missing #defines for Serpent and many other ciphers.  The
util-linux source includes its own version of loop.h for international 
support, but it's not used.

So here's the patch:

diff -ru util-linux-2.10f.orig/mount/Makefile util-linux-2.10f/mount/Makefile
--- util-linux-2.10f.orig/mount/Makefile	Tue Aug  8 22:03:31 2000
+++ util-linux-2.10f/mount/Makefile	Tue Aug  8 22:29:32 2000
@@ -1,7 +1,7 @@
 include ../make_include
 include ../MCONFIG
 
-CFLAGS = -I$(LIB) $(OPT)
+CFLAGS = -I$(LIB) -Iint-headers $(OPT)
 WARNFLAGS = -Wall -Wstrict-prototypes -Wmissing-prototypes
 DEFINES = -DHAVE_NFS
 
diff -ru util-linux-2.10f.orig/mount/lomount.c util-linux-2.10f/mount/lomount.c
--- util-linux-2.10f.orig/mount/lomount.c	Tue Aug  8 22:03:31 2000
+++ util-linux-2.10f/mount/lomount.c	Tue Aug  8 22:37:21 2000
@@ -236,6 +236,10 @@
     
   case LO_CRYPT_IDEA:
   case LO_CRYPT_CAST128:
+  case LO_CRYPT_SERPENT:
+  case LO_CRYPT_MARS:
+  case LO_CRYPT_RC6:
+  case LO_CRYPT_DFC:
     pass = getpass("Password :");
     MDcalc((byte *)loopinfo.lo_encrypt_key,pass,strlen(pass));
     loopinfo.lo_encrypt_key_size=16; /* 128 Bit key */
diff -ru util-linux-2.10f.orig/mount/losetup.c util-linux-2.10f/mount/losetup.c
--- util-linux-2.10f.orig/mount/losetup.c	Tue Aug  8 22:03:31 2000
+++ util-linux-2.10f/mount/losetup.c	Tue Aug  8 22:39:42 2000
@@ -151,8 +151,12 @@
 	        MDcalc((byte *)loopinfo.lo_encrypt_key,pass,strlen(pass));
 	        loopinfo.lo_encrypt_key_size=20; /* 160 Bit key */
 	        break;
-	case LO_CRYPT_CAST128:
 	case LO_CRYPT_IDEA:
+	case LO_CRYPT_CAST128:
+	case LO_CRYPT_SERPENT:
+	case LO_CRYPT_MARS:
+	case LO_CRYPT_RC6:
+	case LO_CRYPT_DFC:
 	        pass = getpass("Passphrase :");
 	        MDcalc((byte *)loopinfo.lo_encrypt_key,pass,strlen(pass));
 	        loopinfo.lo_encrypt_key_size=16; /* 128 Bit key */



Reply to: