diff --git a/cryptsetup-2.13-crypto.diff b/cryptsetup-2.13-crypto.diff new file mode 100644 index 0000000..2c55a42 --- /dev/null +++ b/cryptsetup-2.13-crypto.diff @@ -0,0 +1,1497 @@ +* password hashing based on debian patch (rmd160, sha*) adds losetup options -k + and -H +* add support for loop-AES compatible strings like "twofish256" + +Signed-off-by: Ludwig Nussel + +Index: util-linux-ng-2.13rc2+git20070725/mount/Makefile.am +=================================================================== +--- util-linux-ng-2.13rc2+git20070725.orig/mount/Makefile.am ++++ util-linux-ng-2.13rc2+git20070725/mount/Makefile.am +@@ -12,7 +12,7 @@ headers_common = fstab.h linux_fs.h moun + mount_paths.h lomount.h fsprobe.h realpath.h xmalloc.h \ + getusername.h loop.h sundries.h + +-mount_common = fstab.c mount_mntent.c getusername.c lomount.c \ ++mount_common = fstab.c mount_mntent.c getusername.c lomount.c rmd160.c sha512.c \ + $(utils_common) $(headers_common) ../lib/env.c + + mount_SOURCES = mount.c $(mount_common) ../lib/setproctitle.c +@@ -25,7 +25,7 @@ umount_LDFLAGS = $(SUID_LDFLAGS) $(AM_LD + + swapon_SOURCES = swapon.c swap_constants.h $(utils_common) + +-losetup_SOURCES = lomount.c loop.h lomount.h ++losetup_SOURCES = lomount.c loop.h lomount.h rmd160.c sha512.c + losetup_CPPFLAGS = -DMAIN $(AM_CPPFLAGS) + + mount_LDADD = $(LDADD_common) +Index: util-linux-ng-2.13rc2+git20070725/mount/rmd160.h +=================================================================== +--- /dev/null ++++ util-linux-ng-2.13rc2+git20070725/mount/rmd160.h +@@ -0,0 +1,11 @@ ++#ifndef RMD160_H ++#define RMD160_H ++ ++#define RMD160_HASH_SIZE 20 ++ ++void ++rmd160_hash_buffer( unsigned char *outbuf, const unsigned char *buffer, size_t length ); ++ ++#endif /*RMD160_H*/ ++ ++ +Index: util-linux-ng-2.13rc2+git20070725/mount/lomount.c +=================================================================== +--- util-linux-ng-2.13rc2+git20070725.orig/mount/lomount.c ++++ util-linux-ng-2.13rc2+git20070725/mount/lomount.c +@@ -20,9 +20,15 @@ + + #include "loop.h" + #include "lomount.h" ++#include "rmd160.h" ++#include "sha512.h" + #include "xstrncpy.h" + #include "nls.h" + ++#ifndef MAX ++#define MAX(a,b) ((a>b)?(a):(b)) ++#endif ++ + extern int verbose; + extern char *progname; + extern char *xstrdup (const char *s); /* not: #include "sundries.h" */ +@@ -95,12 +101,22 @@ show_loop(char *device) { + + if (loopinfo64.lo_encrypt_type || + loopinfo64.lo_crypt_name[0]) { +- char *e = loopinfo64.lo_crypt_name; ++ const char *e = (const char*)loopinfo64.lo_crypt_name; + + if (*e == 0 && loopinfo64.lo_encrypt_type == 1) + e = "XOR"; +- printf(_(", encryption %s (type %d)"), +- e, loopinfo64.lo_encrypt_type); ++ printf(_(", encryption %s (type %d), key length %u"), ++ e, loopinfo64.lo_encrypt_type, loopinfo64.lo_encrypt_key_size); ++ ++#if 0 ++ if(loopinfo64.lo_encrypt_key_size) { ++ unsigned i; ++ printf("\nkey "); ++ for(i = 0; i < loopinfo64.lo_encrypt_key_size; ++i) { ++ printf("%hhx",loopinfo64.lo_encrypt_key[i]); ++ } ++ } ++#endif + } + printf("\n"); + close (fd); +@@ -259,7 +275,7 @@ xgetpass(int pfd, const char *prompt) { + } + + if (pass == NULL) +- return ""; ++ return NULL; + + pass[i] = 0; + return pass; +@@ -273,12 +289,30 @@ digits_only(const char *s) { + return 1; + } + ++static void phash_none(const unsigned char *key, size_t keylen, unsigned char* buf, size_t buflen) ++{ ++ memcpy(buf, key, MAX(buflen, keylen)); ++} ++ ++static void phash_rmd160(const unsigned char *key, size_t keylen, unsigned char* buf, size_t buflen) ++{ ++ unsigned char tmpbuf[RMD160_HASH_SIZE*2]; ++ unsigned char* tmp = malloc(keylen+1); ++ tmp[0]='A'; ++ memcpy(tmp+1, key, keylen); ++ rmd160_hash_buffer(tmpbuf, key, keylen); ++ rmd160_hash_buffer(tmpbuf + RMD160_HASH_SIZE, tmp, keylen+1); ++ memset(tmp, 0, keylen+1); ++ free(tmp); ++ memcpy(buf, tmpbuf, MAX(buflen, sizeof(tmpbuf))); ++} ++ + int + set_loop(const char *device, const char *file, unsigned long long offset, +- const char *encryption, int pfd, int *loopro) { ++ const char *encryption, const char* phash, int pfd, int *loopro, int keysz) { + struct loop_info64 loopinfo64; + int fd, ffd, mode, i; +- char *pass; ++ char *pass = NULL; + + mode = (*loopro ? O_RDONLY : O_RDWR); + if ((ffd = open(file, mode)) < 0) { +@@ -297,15 +331,43 @@ set_loop(const char *device, const char + + memset(&loopinfo64, 0, sizeof(loopinfo64)); + +- xstrncpy(loopinfo64.lo_file_name, file, LO_NAME_SIZE); ++ xstrncpy((char*)loopinfo64.lo_file_name, file, LO_NAME_SIZE); ++ ++ loopinfo64.lo_encrypt_key_size = 0; + + if (encryption && *encryption) { ++ // a hint for suse users ++ if(!strcmp(encryption, "twofishSL92")) { ++ fprintf(stderr, _("twofishSL92 is not supported via cryptoloop, please use dm-crypt to access the volume\n")); ++ close(fd); ++ close(ffd); ++ return 1; ++ } + if (digits_only(encryption)) { + loopinfo64.lo_encrypt_type = atoi(encryption); + } else { +- loopinfo64.lo_encrypt_type = LO_CRYPT_CRYPTOAPI; +- snprintf(loopinfo64.lo_crypt_name, LO_NAME_SIZE, ++ // check for something like twofish256 ++ unsigned len = strlen(encryption); ++ snprintf((char*)loopinfo64.lo_crypt_name, LO_NAME_SIZE, + "%s", encryption); ++ if(len > 3) { ++ if(isdigit(loopinfo64.lo_crypt_name[len-3]) ++ && isdigit(loopinfo64.lo_crypt_name[len-2]) ++ && isdigit(loopinfo64.lo_crypt_name[len-1])) { ++ loopinfo64.lo_encrypt_key_size = atoi((char*)&loopinfo64.lo_crypt_name[len-3]) >> 3; ++ loopinfo64.lo_crypt_name[len-3] = 0; ++ } ++ } ++ ++ if(keysz && loopinfo64.lo_encrypt_key_size && loopinfo64.lo_encrypt_key_size != keysz >> 3) { ++ fprintf(stderr, _("please either specify '%s%d' or -e '%s' -k '%d'\n"), ++ loopinfo64.lo_crypt_name, loopinfo64.lo_encrypt_key_size<<3, ++ loopinfo64.lo_crypt_name, keysz); ++ close(fd); ++ close(ffd); ++ return 1; ++ } ++ loopinfo64.lo_encrypt_type = LO_CRYPT_CRYPTOAPI; + } + } + +@@ -325,20 +387,64 @@ set_loop(const char *device, const char + } + #endif + +- switch (loopinfo64.lo_encrypt_type) { +- case LO_CRYPT_NONE: +- loopinfo64.lo_encrypt_key_size = 0; +- break; +- case LO_CRYPT_XOR: +- pass = getpass(_("Password: ")); +- goto gotpass; +- default: +- pass = xgetpass(pfd, _("Password: ")); +- gotpass: ++ if (loopinfo64.lo_encrypt_type != LO_CRYPT_NONE) { ++ void (*hfunc)(const unsigned char*, size_t, unsigned char*, size_t) = NULL; ++ + memset(loopinfo64.lo_encrypt_key, 0, LO_KEY_SIZE); +- xstrncpy(loopinfo64.lo_encrypt_key, pass, LO_KEY_SIZE); ++ ++ pass = xgetpass(pfd, _("Password: ")); ++ if(!pass) { ++ close(fd); ++ close(ffd); ++ return 1; ++ } ++ ++ // set default hash functions, loop-AES compatible ++ if(loopinfo64.lo_encrypt_type == LO_CRYPT_CRYPTOAPI) { ++ hfunc = sha512_hash_buffer; ++ if(loopinfo64.lo_encrypt_key_size == 24) hfunc = sha384_hash_buffer; ++ if(loopinfo64.lo_encrypt_key_size == 32) hfunc = sha512_hash_buffer; ++ } else { ++ hfunc = phash_none; ++ loopinfo64.lo_encrypt_key_size = keysz?keysz>>3:LO_KEY_SIZE; ++ } ++ ++ if(!loopinfo64.lo_encrypt_key_size) { ++ if(!keysz) { ++ if(verbose) ++ fprintf(stderr, _("please specify a key length\n")); ++ close(fd); ++ close(ffd); ++ return 1; ++ } ++ loopinfo64.lo_encrypt_key_size = keysz>>3; ++ } ++ ++ if (phash) { ++ if(!strcasecmp(phash, "sha512")) { ++ hfunc = sha512_hash_buffer; ++ } else if(!strcasecmp(phash, "sha384")) { ++ hfunc = sha384_hash_buffer; ++ } else if(!strcasecmp(phash, "sha256")) { ++ hfunc = sha256_hash_buffer; ++ } else if(!strcasecmp(phash, "rmd160")) { ++ hfunc = phash_rmd160; ++ } else if(!strcasecmp(phash, "none")) { ++ hfunc = phash_none; ++ } else { ++ fprintf(stderr, _("unsupported hash method '%s'\n"), phash); ++ close(fd); ++ close(ffd); ++ return 1; ++ } ++ } ++ ++ if(hfunc) { ++ hfunc((unsigned char*)pass, strlen(pass), loopinfo64.lo_encrypt_key, loopinfo64.lo_encrypt_key_size); ++ } ++ ++ // zero buffer + memset(pass, 0, strlen(pass)); +- loopinfo64.lo_encrypt_key_size = LO_KEY_SIZE; + } + + if (ioctl(fd, LOOP_SET_FD, ffd) < 0) { +@@ -416,8 +522,8 @@ mutter(void) { + } + + int +-set_loop (const char *device, const char *file, unsigned long long offset, +- const char *encryption, int *loopro) { ++set_loop(const char *device, const char *file, unsigned long long offset, ++ const char *encryption, const char* phash, int pfd, int *loopro, int keysz) { + mutter(); + return 1; + } +@@ -456,7 +562,13 @@ usage(void) { + " %1$s [ options ] {-f|--find|loop_device} file # setup\n" + "\nOptions:\n" + " -e | --encryption enable data encryption with specified \n" ++ " -H | --phash hash password using specified algorithm (rmd160/sha512/sha256/sha384/none)\n" + " -h | --help this help\n" ++ " -k | --keybits specify number of bits in the hashed key given\n" ++ " to the cipher. Some ciphers support several key\n" ++ " sizes and might be more efficient with a smaller\n" ++ " key size. Key sizes < 128 are generally not\n" ++ " recommended\n" + " -o | --offset start at offset into file\n" + " -p | --pass-fd read passphrase from file descriptor \n" + " -r | --read-only setup read-only loop device\n" +@@ -497,11 +609,14 @@ error (const char *fmt, ...) { + int + main(int argc, char **argv) { + char *p, *offset, *encryption, *passfd, *device, *file; ++ char *keysize; ++ char *phash = NULL; + int delete, find, c, all; + int res = 0; + int showdev = 0; + int ro = 0; + int pfd = -1; ++ int keysz = 0; + unsigned long long off; + struct option longopts[] = { + { "all", 0, 0, 'a' }, +@@ -509,6 +624,8 @@ main(int argc, char **argv) { + { "encryption", 1, 0, 'e' }, + { "find", 0, 0, 'f' }, + { "help", 0, 0, 'h' }, ++ { "keybits", 1, 0, 'k' }, ++ { "phash", 1, 0, 'H' }, + { "offset", 1, 0, 'o' }, + { "pass-fd", 1, 0, 'p' }, + { "read-only", 0, 0, 'r' }, +@@ -524,12 +641,13 @@ main(int argc, char **argv) { + delete = find = all = 0; + off = 0; + offset = encryption = passfd = NULL; ++ keysize = NULL; + + progname = argv[0]; + if ((p = strrchr(progname, '/')) != NULL) + progname = p+1; + +- while ((c = getopt_long(argc, argv, "ade:E:fho:p:rsv", ++ while ((c = getopt_long(argc, argv, "ade:E:fhk:No:p:rsvH:", + longopts, NULL)) != -1) { + switch (c) { + case 'a': +@@ -548,6 +666,12 @@ main(int argc, char **argv) { + case 'f': + find = 1; + break; ++ case 'k': ++ keysize = optarg; ++ break; ++ case 'H': ++ phash = optarg; ++ break; + case 'o': + offset = optarg; + break; +@@ -611,8 +735,10 @@ main(int argc, char **argv) { + usage(); + if (passfd && sscanf(passfd, "%d", &pfd) != 1) + usage(); ++ if (keysize && sscanf(keysize,"%d",&keysz) != 1) ++ usage(); + do { +- res = set_loop(device, file, off, encryption, pfd, &ro); ++ res = set_loop(device, file, off, encryption, phash, pfd, &ro, keysz); + if (res == 2 && find) { + if (verbose) + printf("stolen loop=%s...trying again\n", +Index: util-linux-ng-2.13rc2+git20070725/mount/mount.c +=================================================================== +--- util-linux-ng-2.13rc2+git20070725.orig/mount/mount.c ++++ util-linux-ng-2.13rc2+git20070725/mount/mount.c +@@ -93,6 +93,9 @@ static int suid = 0; + /* Contains the fd to read the passphrase from, if any. */ + static int pfd = -1; + ++/* Contains the preferred keysize in bits we want to use */ ++static int keysz = 0; ++ + /* Map from -o and fstab option strings to the flag argument to mount(2). */ + struct opt_map { + const char *opt; /* option name */ +@@ -190,6 +193,7 @@ static int opt_nofail = 0; + + static const char *opt_loopdev, *opt_vfstype, *opt_offset, *opt_encryption, + *opt_speed, *opt_comment, *opt_uhelper; ++static const char *opt_keybits, *opt_phash, *opt_nohashpass; + + static int mounted (const char *spec0, const char *node0); + static int check_special_mountprog(const char *spec, const char *node, +@@ -204,6 +208,9 @@ static struct string_opt_map { + { "vfs=", 1, &opt_vfstype }, + { "offset=", 0, &opt_offset }, + { "encryption=", 0, &opt_encryption }, ++ { "phash=", 0, &opt_phash }, ++ { "keybits=", 0, &opt_keybits }, ++ { "nohashpass", 0, &opt_nohashpass }, + { "speed=", 0, &opt_speed }, + { "comment=", 1, &opt_comment }, + { "uhelper=", 0, &opt_uhelper }, +@@ -858,7 +865,7 @@ loop_check(const char **spec, const char + *type = opt_vfstype; + } + +- *loop = ((*flags & MS_LOOP) || *loopdev || opt_offset || opt_encryption); ++ *loop = ((*flags & MS_LOOP) || *loopdev || opt_offset || opt_encryption || opt_phash || opt_keybits); + *loopfile = *spec; + + if (*loop) { +@@ -879,9 +886,17 @@ loop_check(const char **spec, const char + return EX_SYSERR; /* no more loop devices */ + if (verbose) + printf(_("mount: going to use the loop device %s\n"), *loopdev); +- ++ if (!keysz && opt_keybits) ++ keysz = strtoul(opt_keybits, NULL, 0); ++ if (opt_nohashpass) { ++ if(opt_phash && strcmp(opt_phash, "none")) { ++ error(_("mount: please specify either phash=%s or nohashpass\n")); ++ return EX_FAIL; ++ } ++ opt_phash = "none"; ++ } + if ((res = set_loop(*loopdev, *loopfile, offset, +- opt_encryption, pfd, &loopro))) { ++ opt_encryption, opt_phash, pfd, &loopro, keysz))) { + if (res == 2) { + /* loop dev has been grabbed by some other process, + try again, if not given explicitly */ +@@ -1184,7 +1199,7 @@ try_mount_one (const char *spec0, const + error (_("mount: %s not mounted already, or bad option"), node); + } else { + error (_("mount: wrong fs type, bad option, bad superblock on %s,\n" +- " missing codepage or other error"), ++ " missing codepage or helper program, or other error"), + spec); + + if (stat(spec, &statbuf) == 0 && S_ISBLK(statbuf.st_mode) +@@ -1629,6 +1644,7 @@ static struct option longopts[] = { + { "options", 1, 0, 'o' }, + { "test-opts", 1, 0, 'O' }, + { "pass-fd", 1, 0, 'p' }, ++ { "keybits", 1, 0, 'k' }, + { "types", 1, 0, 't' }, + { "bind", 0, 0, 128 }, + { "replace", 0, 0, 129 }, +@@ -1781,6 +1797,7 @@ main(int argc, char *argv[]) { + char *options = NULL, *test_opts = NULL, *node; + const char *spec = NULL; + char *label = NULL; ++ char *keysize = NULL; + char *uuid = NULL; + char *types = NULL; + char *p; +@@ -1811,7 +1828,7 @@ main(int argc, char *argv[]) { + initproctitle(argc, argv); + #endif + +- while ((c = getopt_long (argc, argv, "afFhilL:no:O:p:rsU:vVwt:", ++ while ((c = getopt_long (argc, argv, "afFhik:lL:no:O:p:rsU:vVwt:", + longopts, NULL)) != -1) { + switch (c) { + case 'a': /* mount everything in fstab */ +@@ -1829,6 +1846,9 @@ main(int argc, char *argv[]) { + case 'i': + external_allowed = 0; + break; ++ case 'k': ++ keysize = optarg; ++ break; + case 'l': + list_with_volumelabel = 1; + break; +@@ -1975,6 +1995,9 @@ main(int argc, char *argv[]) { + create_mtab (); + } + ++ if (keysize && sscanf(keysize,"%d",&keysz) != 1) ++ die (EX_USAGE, _("mount: argument to --keybits or -k must be a number")); ++ + switch (argc+specseen) { + case 0: + /* mount -a */ +Index: util-linux-ng-2.13rc2+git20070725/mount/lomount.h +=================================================================== +--- util-linux-ng-2.13rc2+git20070725.orig/mount/lomount.h ++++ util-linux-ng-2.13rc2+git20070725/mount/lomount.h +@@ -1,6 +1,6 @@ + extern int verbose; +-extern int set_loop(const char *, const char *, unsigned long long, +- const char *, int, int *); ++extern int set_loop(const char *device, const char *file, unsigned long long offset, ++ const char *encryption, const char* phash, int pfd, int *loopro, int keysz); + extern int del_loop(const char *); + extern int is_loop_device(const char *); + extern char * find_unused_loop_device(void); +Index: util-linux-ng-2.13rc2+git20070725/mount/rmd160.c +=================================================================== +--- /dev/null ++++ util-linux-ng-2.13rc2+git20070725/mount/rmd160.c +@@ -0,0 +1,532 @@ ++/* rmd160.c - RIPE-MD160 ++ * Copyright (C) 1998 Free Software Foundation, Inc. ++ */ ++ ++/* This file was part of GnuPG. Modified for use within the Linux ++ * mount utility by Marc Mutz . None of this code is ++ * by myself. I just removed everything that you don't need when all ++ * you want to do is to use rmd160_hash_buffer(). ++ * My comments are marked with (mm). */ ++ ++/* GnuPG is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * GnuPG is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ ++ ++#include /* (mm) for memcpy */ ++#include /* (mm) for BIG_ENDIAN and BYTE_ORDER */ ++#include "rmd160.h" ++ ++/* (mm) these are used by the original GnuPG file. In order to modify ++ * that file not too much, we keep the notations. maybe it would be ++ * better to include linux/types.h and typedef __u32 to u32 and __u8 ++ * to byte? */ ++typedef unsigned int u32; /* taken from e.g. util-linux's minix.h */ ++typedef unsigned char byte; ++ ++typedef struct { ++ u32 h0,h1,h2,h3,h4; ++ u32 nblocks; ++ byte buf[64]; ++ int count; ++} RMD160_CONTEXT; ++ ++/**************** ++ * Rotate a 32 bit integer by n bytes ++ */ ++#if defined(__GNUC__) && defined(__i386__) ++static inline u32 ++rol( u32 x, int n) ++{ ++ __asm__("roll %%cl,%0" ++ :"=r" (x) ++ :"0" (x),"c" (n)); ++ return x; ++} ++#else ++ #define rol(x,n) ( ((x) << (n)) | ((x) >> (32-(n))) ) ++#endif ++ ++/********************************* ++ * RIPEMD-160 is not patented, see (as of 25.10.97) ++ * http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html ++ * Note that the code uses Little Endian byteorder, which is good for ++ * 386 etc, but we must add some conversion when used on a big endian box. ++ * ++ * ++ * Pseudo-code for RIPEMD-160 ++ * ++ * RIPEMD-160 is an iterative hash function that operates on 32-bit words. ++ * The round function takes as input a 5-word chaining variable and a 16-word ++ * message block and maps this to a new chaining variable. All operations are ++ * defined on 32-bit words. Padding is identical to that of MD4. ++ * ++ * ++ * RIPEMD-160: definitions ++ * ++ * ++ * nonlinear functions at bit level: exor, mux, -, mux, - ++ * ++ * f(j, x, y, z) = x XOR y XOR z (0 <= j <= 15) ++ * f(j, x, y, z) = (x AND y) OR (NOT(x) AND z) (16 <= j <= 31) ++ * f(j, x, y, z) = (x OR NOT(y)) XOR z (32 <= j <= 47) ++ * f(j, x, y, z) = (x AND z) OR (y AND NOT(z)) (48 <= j <= 63) ++ * f(j, x, y, z) = x XOR (y OR NOT(z)) (64 <= j <= 79) ++ * ++ * ++ * added constants (hexadecimal) ++ * ++ * K(j) = 0x00000000 (0 <= j <= 15) ++ * K(j) = 0x5A827999 (16 <= j <= 31) int(2**30 x sqrt(2)) ++ * K(j) = 0x6ED9EBA1 (32 <= j <= 47) int(2**30 x sqrt(3)) ++ * K(j) = 0x8F1BBCDC (48 <= j <= 63) int(2**30 x sqrt(5)) ++ * K(j) = 0xA953FD4E (64 <= j <= 79) int(2**30 x sqrt(7)) ++ * K'(j) = 0x50A28BE6 (0 <= j <= 15) int(2**30 x cbrt(2)) ++ * K'(j) = 0x5C4DD124 (16 <= j <= 31) int(2**30 x cbrt(3)) ++ * K'(j) = 0x6D703EF3 (32 <= j <= 47) int(2**30 x cbrt(5)) ++ * K'(j) = 0x7A6D76E9 (48 <= j <= 63) int(2**30 x cbrt(7)) ++ * K'(j) = 0x00000000 (64 <= j <= 79) ++ * ++ * ++ * selection of message word ++ * ++ * r(j) = j (0 <= j <= 15) ++ * r(16..31) = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8 ++ * r(32..47) = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12 ++ * r(48..63) = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2 ++ * r(64..79) = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 ++ * r0(0..15) = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12 ++ * r0(16..31)= 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2 ++ * r0(32..47)= 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13 ++ * r0(48..63)= 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14 ++ * r0(64..79)= 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 ++ * ++ * ++ * amount for rotate left (rol) ++ * ++ * s(0..15) = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8 ++ * s(16..31) = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12 ++ * s(32..47) = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5 ++ * s(48..63) = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12 ++ * s(64..79) = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ++ * s'(0..15) = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6 ++ * s'(16..31)= 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11 ++ * s'(32..47)= 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5 ++ * s'(48..63)= 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8 ++ * s'(64..79)= 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ++ * ++ * ++ * initial value (hexadecimal) ++ * ++ * h0 = 0x67452301; h1 = 0xEFCDAB89; h2 = 0x98BADCFE; h3 = 0x10325476; ++ * h4 = 0xC3D2E1F0; ++ * ++ * ++ * RIPEMD-160: pseudo-code ++ * ++ * It is assumed that the message after padding consists of t 16-word blocks ++ * that will be denoted with X[i][j], with 0 <= i <= t-1 and 0 <= j <= 15. ++ * The symbol [+] denotes addition modulo 2**32 and rol_s denotes cyclic left ++ * shift (rotate) over s positions. ++ * ++ * ++ * for i := 0 to t-1 { ++ * A := h0; B := h1; C := h2; D = h3; E = h4; ++ * A' := h0; B' := h1; C' := h2; D' = h3; E' = h4; ++ * for j := 0 to 79 { ++ * T := rol_s(j)(A [+] f(j, B, C, D) [+] X[i][r(j)] [+] K(j)) [+] E; ++ * A := E; E := D; D := rol_10(C); C := B; B := T; ++ * T := rol_s'(j)(A' [+] f(79-j, B', C', D') [+] X[i][r'(j)] ++ [+] K'(j)) [+] E'; ++ * A' := E'; E' := D'; D' := rol_10(C'); C' := B'; B' := T; ++ * } ++ * T := h1 [+] C [+] D'; h1 := h2 [+] D [+] E'; h2 := h3 [+] E [+] A'; ++ * h3 := h4 [+] A [+] B'; h4 := h0 [+] B [+] C'; h0 := T; ++ * } ++ */ ++ ++/* Some examples: ++ * "" 9c1185a5c5e9fc54612808977ee8f548b2258d31 ++ * "a" 0bdc9d2d256b3ee9daae347be6f4dc835a467ffe ++ * "abc" 8eb208f7e05d987a9b044a8e98c6b087f15a0bfc ++ * "message digest" 5d0689ef49d2fae572b881b123a85ffa21595f36 ++ * "a...z" f71c27109c692c1b56bbdceb5b9d2865b3708dbc ++ * "abcdbcde...nopq" 12a053384a9c0c88e405a06c27dcf49ada62eb2b ++ * "A...Za...z0...9" b0e20b6e3116640286ed3a87a5713079b21f5189 ++ * 8 times "1234567890" 9b752e45573d4b39f4dbd3323cab82bf63326bfb ++ * 1 million times "a" 52783243c1697bdbe16d37f97f68f08325dc1528 ++ */ ++ ++ ++static void ++rmd160_init( RMD160_CONTEXT *hd ) ++{ ++ hd->h0 = 0x67452301; ++ hd->h1 = 0xEFCDAB89; ++ hd->h2 = 0x98BADCFE; ++ hd->h3 = 0x10325476; ++ hd->h4 = 0xC3D2E1F0; ++ hd->nblocks = 0; ++ hd->count = 0; ++} ++ ++ ++ ++/**************** ++ * Transform the message X which consists of 16 32-bit-words ++ */ ++static void ++transform( RMD160_CONTEXT *hd, const byte *data ) ++{ ++ u32 a,b,c,d,e,aa,bb,cc,dd,ee,t; ++ #if BYTE_ORDER == BIG_ENDIAN ++ u32 x[16]; ++ { int i; ++ byte *p2, *p1; ++ for(i=0, p1=data, p2=(byte*)x; i < 16; i++, p2 += 4 ) { ++ p2[3] = *p1++; ++ p2[2] = *p1++; ++ p2[1] = *p1++; ++ p2[0] = *p1++; ++ } ++ } ++ #else ++ #if 0 ++ u32 *x =(u32*)data; ++ #else ++ /* this version is better because it is always aligned; ++ * The performance penalty on a 586-100 is about 6% which ++ * is acceptable - because the data is more local it might ++ * also be possible that this is faster on some machines. ++ * This function (when compiled with -02 on gcc 2.7.2) ++ * executes on a 586-100 (39.73 bogomips) at about 1900kb/sec; ++ * [measured with a 4MB data and "gpgm --print-md rmd160"] */ ++ u32 x[16]; ++ memcpy( x, data, 64 ); ++ #endif ++ #endif ++ ++ ++#define K0 0x00000000 ++#define K1 0x5A827999 ++#define K2 0x6ED9EBA1 ++#define K3 0x8F1BBCDC ++#define K4 0xA953FD4E ++#define KK0 0x50A28BE6 ++#define KK1 0x5C4DD124 ++#define KK2 0x6D703EF3 ++#define KK3 0x7A6D76E9 ++#define KK4 0x00000000 ++#define F0(x,y,z) ( (x) ^ (y) ^ (z) ) ++#define F1(x,y,z) ( ((x) & (y)) | (~(x) & (z)) ) ++#define F2(x,y,z) ( ((x) | ~(y)) ^ (z) ) ++#define F3(x,y,z) ( ((x) & (z)) | ((y) & ~(z)) ) ++#define F4(x,y,z) ( (x) ^ ((y) | ~(z)) ) ++#define R(a,b,c,d,e,f,k,r,s) do { t = a + f(b,c,d) + k + x[r]; \ ++ a = rol(t,s) + e; \ ++ c = rol(c,10); \ ++ } while(0) ++ ++ /* left lane */ ++ a = hd->h0; ++ b = hd->h1; ++ c = hd->h2; ++ d = hd->h3; ++ e = hd->h4; ++ R( a, b, c, d, e, F0, K0, 0, 11 ); ++ R( e, a, b, c, d, F0, K0, 1, 14 ); ++ R( d, e, a, b, c, F0, K0, 2, 15 ); ++ R( c, d, e, a, b, F0, K0, 3, 12 ); ++ R( b, c, d, e, a, F0, K0, 4, 5 ); ++ R( a, b, c, d, e, F0, K0, 5, 8 ); ++ R( e, a, b, c, d, F0, K0, 6, 7 ); ++ R( d, e, a, b, c, F0, K0, 7, 9 ); ++ R( c, d, e, a, b, F0, K0, 8, 11 ); ++ R( b, c, d, e, a, F0, K0, 9, 13 ); ++ R( a, b, c, d, e, F0, K0, 10, 14 ); ++ R( e, a, b, c, d, F0, K0, 11, 15 ); ++ R( d, e, a, b, c, F0, K0, 12, 6 ); ++ R( c, d, e, a, b, F0, K0, 13, 7 ); ++ R( b, c, d, e, a, F0, K0, 14, 9 ); ++ R( a, b, c, d, e, F0, K0, 15, 8 ); ++ R( e, a, b, c, d, F1, K1, 7, 7 ); ++ R( d, e, a, b, c, F1, K1, 4, 6 ); ++ R( c, d, e, a, b, F1, K1, 13, 8 ); ++ R( b, c, d, e, a, F1, K1, 1, 13 ); ++ R( a, b, c, d, e, F1, K1, 10, 11 ); ++ R( e, a, b, c, d, F1, K1, 6, 9 ); ++ R( d, e, a, b, c, F1, K1, 15, 7 ); ++ R( c, d, e, a, b, F1, K1, 3, 15 ); ++ R( b, c, d, e, a, F1, K1, 12, 7 ); ++ R( a, b, c, d, e, F1, K1, 0, 12 ); ++ R( e, a, b, c, d, F1, K1, 9, 15 ); ++ R( d, e, a, b, c, F1, K1, 5, 9 ); ++ R( c, d, e, a, b, F1, K1, 2, 11 ); ++ R( b, c, d, e, a, F1, K1, 14, 7 ); ++ R( a, b, c, d, e, F1, K1, 11, 13 ); ++ R( e, a, b, c, d, F1, K1, 8, 12 ); ++ R( d, e, a, b, c, F2, K2, 3, 11 ); ++ R( c, d, e, a, b, F2, K2, 10, 13 ); ++ R( b, c, d, e, a, F2, K2, 14, 6 ); ++ R( a, b, c, d, e, F2, K2, 4, 7 ); ++ R( e, a, b, c, d, F2, K2, 9, 14 ); ++ R( d, e, a, b, c, F2, K2, 15, 9 ); ++ R( c, d, e, a, b, F2, K2, 8, 13 ); ++ R( b, c, d, e, a, F2, K2, 1, 15 ); ++ R( a, b, c, d, e, F2, K2, 2, 14 ); ++ R( e, a, b, c, d, F2, K2, 7, 8 ); ++ R( d, e, a, b, c, F2, K2, 0, 13 ); ++ R( c, d, e, a, b, F2, K2, 6, 6 ); ++ R( b, c, d, e, a, F2, K2, 13, 5 ); ++ R( a, b, c, d, e, F2, K2, 11, 12 ); ++ R( e, a, b, c, d, F2, K2, 5, 7 ); ++ R( d, e, a, b, c, F2, K2, 12, 5 ); ++ R( c, d, e, a, b, F3, K3, 1, 11 ); ++ R( b, c, d, e, a, F3, K3, 9, 12 ); ++ R( a, b, c, d, e, F3, K3, 11, 14 ); ++ R( e, a, b, c, d, F3, K3, 10, 15 ); ++ R( d, e, a, b, c, F3, K3, 0, 14 ); ++ R( c, d, e, a, b, F3, K3, 8, 15 ); ++ R( b, c, d, e, a, F3, K3, 12, 9 ); ++ R( a, b, c, d, e, F3, K3, 4, 8 ); ++ R( e, a, b, c, d, F3, K3, 13, 9 ); ++ R( d, e, a, b, c, F3, K3, 3, 14 ); ++ R( c, d, e, a, b, F3, K3, 7, 5 ); ++ R( b, c, d, e, a, F3, K3, 15, 6 ); ++ R( a, b, c, d, e, F3, K3, 14, 8 ); ++ R( e, a, b, c, d, F3, K3, 5, 6 ); ++ R( d, e, a, b, c, F3, K3, 6, 5 ); ++ R( c, d, e, a, b, F3, K3, 2, 12 ); ++ R( b, c, d, e, a, F4, K4, 4, 9 ); ++ R( a, b, c, d, e, F4, K4, 0, 15 ); ++ R( e, a, b, c, d, F4, K4, 5, 5 ); ++ R( d, e, a, b, c, F4, K4, 9, 11 ); ++ R( c, d, e, a, b, F4, K4, 7, 6 ); ++ R( b, c, d, e, a, F4, K4, 12, 8 ); ++ R( a, b, c, d, e, F4, K4, 2, 13 ); ++ R( e, a, b, c, d, F4, K4, 10, 12 ); ++ R( d, e, a, b, c, F4, K4, 14, 5 ); ++ R( c, d, e, a, b, F4, K4, 1, 12 ); ++ R( b, c, d, e, a, F4, K4, 3, 13 ); ++ R( a, b, c, d, e, F4, K4, 8, 14 ); ++ R( e, a, b, c, d, F4, K4, 11, 11 ); ++ R( d, e, a, b, c, F4, K4, 6, 8 ); ++ R( c, d, e, a, b, F4, K4, 15, 5 ); ++ R( b, c, d, e, a, F4, K4, 13, 6 ); ++ ++ aa = a; bb = b; cc = c; dd = d; ee = e; ++ ++ /* right lane */ ++ a = hd->h0; ++ b = hd->h1; ++ c = hd->h2; ++ d = hd->h3; ++ e = hd->h4; ++ R( a, b, c, d, e, F4, KK0, 5, 8); ++ R( e, a, b, c, d, F4, KK0, 14, 9); ++ R( d, e, a, b, c, F4, KK0, 7, 9); ++ R( c, d, e, a, b, F4, KK0, 0, 11); ++ R( b, c, d, e, a, F4, KK0, 9, 13); ++ R( a, b, c, d, e, F4, KK0, 2, 15); ++ R( e, a, b, c, d, F4, KK0, 11, 15); ++ R( d, e, a, b, c, F4, KK0, 4, 5); ++ R( c, d, e, a, b, F4, KK0, 13, 7); ++ R( b, c, d, e, a, F4, KK0, 6, 7); ++ R( a, b, c, d, e, F4, KK0, 15, 8); ++ R( e, a, b, c, d, F4, KK0, 8, 11); ++ R( d, e, a, b, c, F4, KK0, 1, 14); ++ R( c, d, e, a, b, F4, KK0, 10, 14); ++ R( b, c, d, e, a, F4, KK0, 3, 12); ++ R( a, b, c, d, e, F4, KK0, 12, 6); ++ R( e, a, b, c, d, F3, KK1, 6, 9); ++ R( d, e, a, b, c, F3, KK1, 11, 13); ++ R( c, d, e, a, b, F3, KK1, 3, 15); ++ R( b, c, d, e, a, F3, KK1, 7, 7); ++ R( a, b, c, d, e, F3, KK1, 0, 12); ++ R( e, a, b, c, d, F3, KK1, 13, 8); ++ R( d, e, a, b, c, F3, KK1, 5, 9); ++ R( c, d, e, a, b, F3, KK1, 10, 11); ++ R( b, c, d, e, a, F3, KK1, 14, 7); ++ R( a, b, c, d, e, F3, KK1, 15, 7); ++ R( e, a, b, c, d, F3, KK1, 8, 12); ++ R( d, e, a, b, c, F3, KK1, 12, 7); ++ R( c, d, e, a, b, F3, KK1, 4, 6); ++ R( b, c, d, e, a, F3, KK1, 9, 15); ++ R( a, b, c, d, e, F3, KK1, 1, 13); ++ R( e, a, b, c, d, F3, KK1, 2, 11); ++ R( d, e, a, b, c, F2, KK2, 15, 9); ++ R( c, d, e, a, b, F2, KK2, 5, 7); ++ R( b, c, d, e, a, F2, KK2, 1, 15); ++ R( a, b, c, d, e, F2, KK2, 3, 11); ++ R( e, a, b, c, d, F2, KK2, 7, 8); ++ R( d, e, a, b, c, F2, KK2, 14, 6); ++ R( c, d, e, a, b, F2, KK2, 6, 6); ++ R( b, c, d, e, a, F2, KK2, 9, 14); ++ R( a, b, c, d, e, F2, KK2, 11, 12); ++ R( e, a, b, c, d, F2, KK2, 8, 13); ++ R( d, e, a, b, c, F2, KK2, 12, 5); ++ R( c, d, e, a, b, F2, KK2, 2, 14); ++ R( b, c, d, e, a, F2, KK2, 10, 13); ++ R( a, b, c, d, e, F2, KK2, 0, 13); ++ R( e, a, b, c, d, F2, KK2, 4, 7); ++ R( d, e, a, b, c, F2, KK2, 13, 5); ++ R( c, d, e, a, b, F1, KK3, 8, 15); ++ R( b, c, d, e, a, F1, KK3, 6, 5); ++ R( a, b, c, d, e, F1, KK3, 4, 8); ++ R( e, a, b, c, d, F1, KK3, 1, 11); ++ R( d, e, a, b, c, F1, KK3, 3, 14); ++ R( c, d, e, a, b, F1, KK3, 11, 14); ++ R( b, c, d, e, a, F1, KK3, 15, 6); ++ R( a, b, c, d, e, F1, KK3, 0, 14); ++ R( e, a, b, c, d, F1, KK3, 5, 6); ++ R( d, e, a, b, c, F1, KK3, 12, 9); ++ R( c, d, e, a, b, F1, KK3, 2, 12); ++ R( b, c, d, e, a, F1, KK3, 13, 9); ++ R( a, b, c, d, e, F1, KK3, 9, 12); ++ R( e, a, b, c, d, F1, KK3, 7, 5); ++ R( d, e, a, b, c, F1, KK3, 10, 15); ++ R( c, d, e, a, b, F1, KK3, 14, 8); ++ R( b, c, d, e, a, F0, KK4, 12, 8); ++ R( a, b, c, d, e, F0, KK4, 15, 5); ++ R( e, a, b, c, d, F0, KK4, 10, 12); ++ R( d, e, a, b, c, F0, KK4, 4, 9); ++ R( c, d, e, a, b, F0, KK4, 1, 12); ++ R( b, c, d, e, a, F0, KK4, 5, 5); ++ R( a, b, c, d, e, F0, KK4, 8, 14); ++ R( e, a, b, c, d, F0, KK4, 7, 6); ++ R( d, e, a, b, c, F0, KK4, 6, 8); ++ R( c, d, e, a, b, F0, KK4, 2, 13); ++ R( b, c, d, e, a, F0, KK4, 13, 6); ++ R( a, b, c, d, e, F0, KK4, 14, 5); ++ R( e, a, b, c, d, F0, KK4, 0, 15); ++ R( d, e, a, b, c, F0, KK4, 3, 13); ++ R( c, d, e, a, b, F0, KK4, 9, 11); ++ R( b, c, d, e, a, F0, KK4, 11, 11); ++ ++ ++ t = hd->h1 + d + cc; ++ hd->h1 = hd->h2 + e + dd; ++ hd->h2 = hd->h3 + a + ee; ++ hd->h3 = hd->h4 + b + aa; ++ hd->h4 = hd->h0 + c + bb; ++ hd->h0 = t; ++} ++ ++ ++/* Update the message digest with the contents ++ * of INBUF with length INLEN. ++ */ ++static void ++rmd160_write( RMD160_CONTEXT *hd, const byte *inbuf, size_t inlen) ++{ ++ if( hd->count == 64 ) { /* flush the buffer */ ++ transform( hd, hd->buf ); ++ hd->count = 0; ++ hd->nblocks++; ++ } ++ if( !inbuf ) ++ return; ++ if( hd->count ) { ++ for( ; inlen && hd->count < 64; inlen-- ) ++ hd->buf[hd->count++] = *inbuf++; ++ rmd160_write( hd, NULL, 0 ); ++ if( !inlen ) ++ return; ++ } ++ ++ while( inlen >= 64 ) { ++ transform( hd, inbuf ); ++ hd->count = 0; ++ hd->nblocks++; ++ inlen -= 64; ++ inbuf += 64; ++ } ++ for( ; inlen && hd->count < 64; inlen-- ) ++ hd->buf[hd->count++] = *inbuf++; ++} ++ ++/* The routine terminates the computation ++ */ ++ ++static void ++rmd160_final( RMD160_CONTEXT *hd ) ++{ ++ u32 t, msb, lsb; ++ byte *p; ++ ++ rmd160_write(hd, NULL, 0); /* flush */; ++ ++ msb = 0; ++ t = hd->nblocks; ++ if( (lsb = t << 6) < t ) /* multiply by 64 to make a byte count */ ++ msb++; ++ msb += t >> 26; ++ t = lsb; ++ if( (lsb = t + hd->count) < t ) /* add the count */ ++ msb++; ++ t = lsb; ++ if( (lsb = t << 3) < t ) /* multiply by 8 to make a bit count */ ++ msb++; ++ msb += t >> 29; ++ ++ if( hd->count < 56 ) { /* enough room */ ++ hd->buf[hd->count++] = 0x80; /* pad */ ++ while( hd->count < 56 ) ++ hd->buf[hd->count++] = 0; /* pad */ ++ } ++ else { /* need one extra block */ ++ hd->buf[hd->count++] = 0x80; /* pad character */ ++ while( hd->count < 64 ) ++ hd->buf[hd->count++] = 0; ++ rmd160_write(hd, NULL, 0); /* flush */; ++ memset(hd->buf, 0, 56 ); /* fill next block with zeroes */ ++ } ++ /* append the 64 bit count */ ++ hd->buf[56] = lsb ; ++ hd->buf[57] = lsb >> 8; ++ hd->buf[58] = lsb >> 16; ++ hd->buf[59] = lsb >> 24; ++ hd->buf[60] = msb ; ++ hd->buf[61] = msb >> 8; ++ hd->buf[62] = msb >> 16; ++ hd->buf[63] = msb >> 24; ++ transform( hd, hd->buf ); ++ ++ p = hd->buf; ++ #if BYTE_ORDER == BIG_ENDIAN ++ #define X(a) do { *p++ = hd->h##a ; *p++ = hd->h##a >> 8; \ ++ *p++ = hd->h##a >> 16; *p++ = hd->h##a >> 24; } while(0) ++ #else /* little endian */ ++ #define X(a) do { *(u32*)p = hd->h##a ; p += 4; } while(0) ++ #endif ++ X(0); ++ X(1); ++ X(2); ++ X(3); ++ X(4); ++ #undef X ++} ++ ++/**************** ++ * Shortcut functions which puts the hash value of the supplied buffer ++ * into outbuf which must have a size of 20 bytes. ++ */ ++void ++rmd160_hash_buffer( unsigned char *outbuf, const unsigned char *buffer, size_t length ) ++{ ++ RMD160_CONTEXT hd; ++ ++ rmd160_init( &hd ); ++ rmd160_write( &hd, buffer, length ); ++ rmd160_final( &hd ); ++ memcpy( outbuf, hd.buf, 20 ); ++} +Index: util-linux-ng-2.13rc2+git20070725/mount/sha512.c +=================================================================== +--- /dev/null ++++ util-linux-ng-2.13rc2+git20070725/mount/sha512.c +@@ -0,0 +1,432 @@ ++/* ++ * sha512.c ++ * ++ * Written by Jari Ruusu, April 16 2001 ++ * ++ * Copyright 2001 by Jari Ruusu. ++ * Redistribution of this file is permitted under the GNU Public License. ++ */ ++ ++#include ++#include ++#include "sha512.h" ++ ++/* Define one or more of these. If none is defined, you get all of them */ ++#if !defined(SHA256_NEEDED)&&!defined(SHA512_NEEDED)&&!defined(SHA384_NEEDED) ++# define SHA256_NEEDED 1 ++# define SHA512_NEEDED 1 ++# define SHA384_NEEDED 1 ++#endif ++ ++#if defined(SHA256_NEEDED) ++static const u_int32_t sha256_hashInit[8] = { ++ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, ++ 0x1f83d9ab, 0x5be0cd19 ++}; ++static const u_int32_t sha256_K[64] = { ++ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, ++ 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, ++ 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, ++ 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, ++ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, ++ 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, ++ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, ++ 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, ++ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, ++ 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, ++ 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 ++}; ++#endif ++ ++#if defined(SHA512_NEEDED) ++static const u_int64_t sha512_hashInit[8] = { ++ 0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, 0x3c6ef372fe94f82bULL, ++ 0xa54ff53a5f1d36f1ULL, 0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL, ++ 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL ++}; ++#endif ++ ++#if defined(SHA384_NEEDED) ++static const u_int64_t sha384_hashInit[8] = { ++ 0xcbbb9d5dc1059ed8ULL, 0x629a292a367cd507ULL, 0x9159015a3070dd17ULL, ++ 0x152fecd8f70e5939ULL, 0x67332667ffc00b31ULL, 0x8eb44a8768581511ULL, ++ 0xdb0c2e0d64f98fa7ULL, 0x47b5481dbefa4fa4ULL ++}; ++#endif ++ ++#if defined(SHA512_NEEDED) || defined(SHA384_NEEDED) ++static const u_int64_t sha512_K[80] = { ++ 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL, ++ 0xe9b5dba58189dbbcULL, 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, ++ 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, 0xd807aa98a3030242ULL, ++ 0x12835b0145706fbeULL, 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL, ++ 0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, 0x9bdc06a725c71235ULL, ++ 0xc19bf174cf692694ULL, 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, ++ 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, 0x2de92c6f592b0275ULL, ++ 0x4a7484aa6ea6e483ULL, 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL, ++ 0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, 0xb00327c898fb213fULL, ++ 0xbf597fc7beef0ee4ULL, 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, ++ 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, 0x27b70a8546d22ffcULL, ++ 0x2e1b21385c26c926ULL, 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL, ++ 0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, 0x81c2c92e47edaee6ULL, ++ 0x92722c851482353bULL, 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, ++ 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, 0xd192e819d6ef5218ULL, ++ 0xd69906245565a910ULL, 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL, ++ 0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, 0x2748774cdf8eeb99ULL, ++ 0x34b0bcb5e19b48a8ULL, 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, ++ 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, 0x748f82ee5defb2fcULL, ++ 0x78a5636f43172f60ULL, 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL, ++ 0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, 0xbef9a3f7b2c67915ULL, ++ 0xc67178f2e372532bULL, 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, ++ 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, 0x06f067aa72176fbaULL, ++ 0x0a637dc5a2c898a6ULL, 0x113f9804bef90daeULL, 0x1b710b35131c471bULL, ++ 0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, 0x3c9ebe0a15c9bebcULL, ++ 0x431d67c49c100d4cULL, 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, ++ 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL ++}; ++#endif ++ ++#define Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z))) ++#define Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) ++#define R(x,y) ((y) >> (x)) ++ ++#if defined(SHA256_NEEDED) ++void sha256_init(sha256_context *ctx) ++{ ++ memcpy(&ctx->sha_H[0], &sha256_hashInit[0], sizeof(ctx->sha_H)); ++ ctx->sha_blocks = 0; ++ ctx->sha_bufCnt = 0; ++} ++ ++#define S(x,y) (((y) >> (x)) | ((y) << (32 - (x)))) ++#define uSig0(x) ((S(2,(x))) ^ (S(13,(x))) ^ (S(22,(x)))) ++#define uSig1(x) ((S(6,(x))) ^ (S(11,(x))) ^ (S(25,(x)))) ++#define lSig0(x) ((S(7,(x))) ^ (S(18,(x))) ^ (R(3,(x)))) ++#define lSig1(x) ((S(17,(x))) ^ (S(19,(x))) ^ (R(10,(x)))) ++ ++static void sha256_transform(sha256_context *ctx, const unsigned char *datap) ++{ ++ register int j; ++ u_int32_t a, b, c, d, e, f, g, h; ++ u_int32_t T1, T2, W[64], Wm2, Wm15; ++ ++ /* read the data, big endian byte order */ ++ j = 0; ++ do { ++ W[j] = (((u_int32_t)(datap[0]))<<24) | (((u_int32_t)(datap[1]))<<16) | ++ (((u_int32_t)(datap[2]))<<8 ) | ((u_int32_t)(datap[3])); ++ datap += 4; ++ } while(++j < 16); ++ ++ /* initialize variables a...h */ ++ a = ctx->sha_H[0]; ++ b = ctx->sha_H[1]; ++ c = ctx->sha_H[2]; ++ d = ctx->sha_H[3]; ++ e = ctx->sha_H[4]; ++ f = ctx->sha_H[5]; ++ g = ctx->sha_H[6]; ++ h = ctx->sha_H[7]; ++ ++ /* apply compression function */ ++ j = 0; ++ do { ++ if(j >= 16) { ++ Wm2 = W[j - 2]; ++ Wm15 = W[j - 15]; ++ W[j] = lSig1(Wm2) + W[j - 7] + lSig0(Wm15) + W[j - 16]; ++ } ++ T1 = h + uSig1(e) + Ch(e,f,g) + sha256_K[j] + W[j]; ++ T2 = uSig0(a) + Maj(a,b,c); ++ h = g; g = f; f = e; ++ e = d + T1; ++ d = c; c = b; b = a; ++ a = T1 + T2; ++ } while(++j < 64); ++ ++ /* compute intermediate hash value */ ++ ctx->sha_H[0] += a; ++ ctx->sha_H[1] += b; ++ ctx->sha_H[2] += c; ++ ctx->sha_H[3] += d; ++ ctx->sha_H[4] += e; ++ ctx->sha_H[5] += f; ++ ctx->sha_H[6] += g; ++ ctx->sha_H[7] += h; ++ ++ ctx->sha_blocks++; ++} ++ ++void sha256_write(sha256_context *ctx, const unsigned char *datap, int length) ++{ ++ while(length > 0) { ++ if(!ctx->sha_bufCnt) { ++ while(length >= sizeof(ctx->sha_out)) { ++ sha256_transform(ctx, datap); ++ datap += sizeof(ctx->sha_out); ++ length -= sizeof(ctx->sha_out); ++ } ++ if(!length) return; ++ } ++ ctx->sha_out[ctx->sha_bufCnt] = *datap++; ++ length--; ++ if(++ctx->sha_bufCnt == sizeof(ctx->sha_out)) { ++ sha256_transform(ctx, &ctx->sha_out[0]); ++ ctx->sha_bufCnt = 0; ++ } ++ } ++} ++ ++void sha256_final(sha256_context *ctx) ++{ ++ register int j; ++ u_int64_t bitLength; ++ u_int32_t i; ++ unsigned char padByte, *datap; ++ ++ bitLength = (ctx->sha_blocks << 9) | (ctx->sha_bufCnt << 3); ++ padByte = 0x80; ++ sha256_write(ctx, &padByte, 1); ++ ++ /* pad extra space with zeroes */ ++ padByte = 0; ++ while(ctx->sha_bufCnt != 56) { ++ sha256_write(ctx, &padByte, 1); ++ } ++ ++ /* write bit length, big endian byte order */ ++ ctx->sha_out[56] = bitLength >> 56; ++ ctx->sha_out[57] = bitLength >> 48; ++ ctx->sha_out[58] = bitLength >> 40; ++ ctx->sha_out[59] = bitLength >> 32; ++ ctx->sha_out[60] = bitLength >> 24; ++ ctx->sha_out[61] = bitLength >> 16; ++ ctx->sha_out[62] = bitLength >> 8; ++ ctx->sha_out[63] = bitLength; ++ sha256_transform(ctx, &ctx->sha_out[0]); ++ ++ /* return results in ctx->sha_out[0...31] */ ++ datap = &ctx->sha_out[0]; ++ j = 0; ++ do { ++ i = ctx->sha_H[j]; ++ datap[0] = i >> 24; ++ datap[1] = i >> 16; ++ datap[2] = i >> 8; ++ datap[3] = i; ++ datap += 4; ++ } while(++j < 8); ++ ++ /* clear sensitive information */ ++ memset(&ctx->sha_out[32], 0, sizeof(sha256_context) - 32); ++} ++ ++void sha256_hash_buffer(const unsigned char *ib, size_t ile, unsigned char *ob, size_t ole) ++{ ++ sha256_context ctx; ++ ++ if(ole < 1) return; ++ memset(ob, 0, ole); ++ if(ole > 32) ole = 32; ++ sha256_init(&ctx); ++ sha256_write(&ctx, ib, ile); ++ sha256_final(&ctx); ++ memcpy(ob, &ctx.sha_out[0], ole); ++ memset(&ctx, 0, sizeof(ctx)); ++} ++ ++#endif ++ ++#if defined(SHA512_NEEDED) ++void sha512_init(sha512_context *ctx) ++{ ++ memcpy(&ctx->sha_H[0], &sha512_hashInit[0], sizeof(ctx->sha_H)); ++ ctx->sha_blocks = 0; ++ ctx->sha_blocksMSB = 0; ++ ctx->sha_bufCnt = 0; ++} ++#endif ++ ++#if defined(SHA512_NEEDED) || defined(SHA384_NEEDED) ++#undef S ++#undef uSig0 ++#undef uSig1 ++#undef lSig0 ++#undef lSig1 ++#define S(x,y) (((y) >> (x)) | ((y) << (64 - (x)))) ++#define uSig0(x) ((S(28,(x))) ^ (S(34,(x))) ^ (S(39,(x)))) ++#define uSig1(x) ((S(14,(x))) ^ (S(18,(x))) ^ (S(41,(x)))) ++#define lSig0(x) ((S(1,(x))) ^ (S(8,(x))) ^ (R(7,(x)))) ++#define lSig1(x) ((S(19,(x))) ^ (S(61,(x))) ^ (R(6,(x)))) ++ ++static void sha512_transform(sha512_context *ctx, const unsigned char *datap) ++{ ++ register int j; ++ u_int64_t a, b, c, d, e, f, g, h; ++ u_int64_t T1, T2, W[80], Wm2, Wm15; ++ ++ /* read the data, big endian byte order */ ++ j = 0; ++ do { ++ W[j] = (((u_int64_t)(datap[0]))<<56) | (((u_int64_t)(datap[1]))<<48) | ++ (((u_int64_t)(datap[2]))<<40) | (((u_int64_t)(datap[3]))<<32) | ++ (((u_int64_t)(datap[4]))<<24) | (((u_int64_t)(datap[5]))<<16) | ++ (((u_int64_t)(datap[6]))<<8 ) | ((u_int64_t)(datap[7])); ++ datap += 8; ++ } while(++j < 16); ++ ++ /* initialize variables a...h */ ++ a = ctx->sha_H[0]; ++ b = ctx->sha_H[1]; ++ c = ctx->sha_H[2]; ++ d = ctx->sha_H[3]; ++ e = ctx->sha_H[4]; ++ f = ctx->sha_H[5]; ++ g = ctx->sha_H[6]; ++ h = ctx->sha_H[7]; ++ ++ /* apply compression function */ ++ j = 0; ++ do { ++ if(j >= 16) { ++ Wm2 = W[j - 2]; ++ Wm15 = W[j - 15]; ++ W[j] = lSig1(Wm2) + W[j - 7] + lSig0(Wm15) + W[j - 16]; ++ } ++ T1 = h + uSig1(e) + Ch(e,f,g) + sha512_K[j] + W[j]; ++ T2 = uSig0(a) + Maj(a,b,c); ++ h = g; g = f; f = e; ++ e = d + T1; ++ d = c; c = b; b = a; ++ a = T1 + T2; ++ } while(++j < 80); ++ ++ /* compute intermediate hash value */ ++ ctx->sha_H[0] += a; ++ ctx->sha_H[1] += b; ++ ctx->sha_H[2] += c; ++ ctx->sha_H[3] += d; ++ ctx->sha_H[4] += e; ++ ctx->sha_H[5] += f; ++ ctx->sha_H[6] += g; ++ ctx->sha_H[7] += h; ++ ++ ctx->sha_blocks++; ++ if(!ctx->sha_blocks) ctx->sha_blocksMSB++; ++} ++ ++void sha512_write(sha512_context *ctx, const unsigned char *datap, int length) ++{ ++ while(length > 0) { ++ if(!ctx->sha_bufCnt) { ++ while(length >= sizeof(ctx->sha_out)) { ++ sha512_transform(ctx, datap); ++ datap += sizeof(ctx->sha_out); ++ length -= sizeof(ctx->sha_out); ++ } ++ if(!length) return; ++ } ++ ctx->sha_out[ctx->sha_bufCnt] = *datap++; ++ length--; ++ if(++ctx->sha_bufCnt == sizeof(ctx->sha_out)) { ++ sha512_transform(ctx, &ctx->sha_out[0]); ++ ctx->sha_bufCnt = 0; ++ } ++ } ++} ++ ++void sha512_final(sha512_context *ctx) ++{ ++ register int j; ++ u_int64_t bitLength, bitLengthMSB; ++ u_int64_t i; ++ unsigned char padByte, *datap; ++ ++ bitLength = (ctx->sha_blocks << 10) | (ctx->sha_bufCnt << 3); ++ bitLengthMSB = (ctx->sha_blocksMSB << 10) | (ctx->sha_blocks >> 54); ++ padByte = 0x80; ++ sha512_write(ctx, &padByte, 1); ++ ++ /* pad extra space with zeroes */ ++ padByte = 0; ++ while(ctx->sha_bufCnt != 112) { ++ sha512_write(ctx, &padByte, 1); ++ } ++ ++ /* write bit length, big endian byte order */ ++ ctx->sha_out[112] = bitLengthMSB >> 56; ++ ctx->sha_out[113] = bitLengthMSB >> 48; ++ ctx->sha_out[114] = bitLengthMSB >> 40; ++ ctx->sha_out[115] = bitLengthMSB >> 32; ++ ctx->sha_out[116] = bitLengthMSB >> 24; ++ ctx->sha_out[117] = bitLengthMSB >> 16; ++ ctx->sha_out[118] = bitLengthMSB >> 8; ++ ctx->sha_out[119] = bitLengthMSB; ++ ctx->sha_out[120] = bitLength >> 56; ++ ctx->sha_out[121] = bitLength >> 48; ++ ctx->sha_out[122] = bitLength >> 40; ++ ctx->sha_out[123] = bitLength >> 32; ++ ctx->sha_out[124] = bitLength >> 24; ++ ctx->sha_out[125] = bitLength >> 16; ++ ctx->sha_out[126] = bitLength >> 8; ++ ctx->sha_out[127] = bitLength; ++ sha512_transform(ctx, &ctx->sha_out[0]); ++ ++ /* return results in ctx->sha_out[0...63] */ ++ datap = &ctx->sha_out[0]; ++ j = 0; ++ do { ++ i = ctx->sha_H[j]; ++ datap[0] = i >> 56; ++ datap[1] = i >> 48; ++ datap[2] = i >> 40; ++ datap[3] = i >> 32; ++ datap[4] = i >> 24; ++ datap[5] = i >> 16; ++ datap[6] = i >> 8; ++ datap[7] = i; ++ datap += 8; ++ } while(++j < 8); ++ ++ /* clear sensitive information */ ++ memset(&ctx->sha_out[64], 0, sizeof(sha512_context) - 64); ++} ++ ++void sha512_hash_buffer(const unsigned char *ib, size_t ile, unsigned char *ob, size_t ole) ++{ ++ sha512_context ctx; ++ ++ if(ole < 1) return; ++ memset(ob, 0, ole); ++ if(ole > 64) ole = 64; ++ sha512_init(&ctx); ++ sha512_write(&ctx, ib, ile); ++ sha512_final(&ctx); ++ memcpy(ob, &ctx.sha_out[0], ole); ++ memset(&ctx, 0, sizeof(ctx)); ++} ++#endif ++ ++#if defined(SHA384_NEEDED) ++void sha384_init(sha512_context *ctx) ++{ ++ memcpy(&ctx->sha_H[0], &sha384_hashInit[0], sizeof(ctx->sha_H)); ++ ctx->sha_blocks = 0; ++ ctx->sha_blocksMSB = 0; ++ ctx->sha_bufCnt = 0; ++} ++ ++void sha384_hash_buffer(const unsigned char *ib, size_t ile, unsigned char *ob, size_t ole) ++{ ++ sha512_context ctx; ++ ++ if(ole < 1) return; ++ memset(ob, 0, ole); ++ if(ole > 48) ole = 48; ++ sha384_init(&ctx); ++ sha512_write(&ctx, ib, ile); ++ sha512_final(&ctx); ++ memcpy(ob, &ctx.sha_out[0], ole); ++ memset(&ctx, 0, sizeof(ctx)); ++} ++#endif +Index: util-linux-ng-2.13rc2+git20070725/mount/sha512.h +=================================================================== +--- /dev/null ++++ util-linux-ng-2.13rc2+git20070725/mount/sha512.h +@@ -0,0 +1,45 @@ ++/* ++ * sha512.h ++ * ++ * Written by Jari Ruusu, April 16 2001 ++ * ++ * Copyright 2001 by Jari Ruusu. ++ * Redistribution of this file is permitted under the GNU Public License. ++ */ ++ ++#include ++ ++typedef struct { ++ unsigned char sha_out[64]; /* results are here, bytes 0...31 */ ++ u_int32_t sha_H[8]; ++ u_int64_t sha_blocks; ++ int sha_bufCnt; ++} sha256_context; ++ ++typedef struct { ++ unsigned char sha_out[128]; /* results are here, bytes 0...63 */ ++ u_int64_t sha_H[8]; ++ u_int64_t sha_blocks; ++ u_int64_t sha_blocksMSB; ++ int sha_bufCnt; ++} sha512_context; ++ ++/* no sha384_context, use sha512_context */ ++ ++/* 256 bit hash, provides 128 bits of security against collision attacks */ ++extern void sha256_init(sha256_context *); ++extern void sha256_write(sha256_context *, const unsigned char *, int); ++extern void sha256_final(sha256_context *); ++extern void sha256_hash_buffer(const unsigned char *, size_t, unsigned char *, size_t); ++ ++/* 512 bit hash, provides 256 bits of security against collision attacks */ ++extern void sha512_init(sha512_context *); ++extern void sha512_write(sha512_context *, const unsigned char *, int); ++extern void sha512_final(sha512_context *); ++extern void sha512_hash_buffer(const unsigned char *, size_t, unsigned char *, size_t); ++ ++/* 384 bit hash, provides 192 bits of security against collision attacks */ ++extern void sha384_init(sha512_context *); ++/* no sha384_write(), use sha512_write() */ ++/* no sha384_final(), use sha512_final(), result in ctx->sha_out[0...47] */ ++extern void sha384_hash_buffer(const unsigned char *, size_t, unsigned char *, size_t); diff --git a/raw.init b/raw.init index 7fb0069..76623b7 100644 --- a/raw.init +++ b/raw.init @@ -15,14 +15,13 @@ # Required-Stop: # Default-Start: 2 3 5 # Default-Stop: 0 1 6 -# Short-Description: raw devices # Description: raw-devices ### END INIT INFO . /etc/rc.status CONFIG=/etc/raw -RAW_BIN=/sbin/raw +RAW_BIN=/usr/sbin/raw RAW_MODULE=raw test -x $RAW_BIN || exit 5 diff --git a/util-linux-2.12r-disk_utils_mkfs_open_exclusive.patch b/util-linux-2.12r-disk_utils_mkfs_open_exclusive.patch new file mode 100644 index 0000000..260392e --- /dev/null +++ b/util-linux-2.12r-disk_utils_mkfs_open_exclusive.patch @@ -0,0 +1,39 @@ +Index: util-linux-ng-2.12r+git20070330/disk-utils/mkswap.c +=================================================================== +--- util-linux-ng-2.12r+git20070330.orig/disk-utils/mkswap.c ++++ util-linux-ng-2.12r+git20070330/disk-utils/mkswap.c +@@ -660,7 +660,7 @@ main(int argc, char ** argv) { + usage(); + } + +- DEV = open(device_name,O_RDWR); ++ DEV = open(device_name, O_RDWR | O_EXCL); + if (DEV < 0 || fstat(DEV, &statbuf) < 0) { + perror(device_name); + exit(1); +Index: util-linux-ng-2.12r+git20070330/disk-utils/mkfs.minix.c +=================================================================== +--- util-linux-ng-2.12r+git20070330.orig/disk-utils/mkfs.minix.c ++++ util-linux-ng-2.12r+git20070330/disk-utils/mkfs.minix.c +@@ -699,7 +699,7 @@ main(int argc, char ** argv) { + tmp += dirsize; + *(short *)tmp = 2; + strcpy(tmp+2,".badblocks"); +- DEV = open(device_name,O_RDWR ); ++ DEV = open(device_name,O_RDWR | O_EXCL); + if (DEV<0) + die(_("unable to open %s")); + if (fstat(DEV,&statbuf)<0) +Index: util-linux-ng-2.12r+git20070330/disk-utils/mkfs.bfs.c +=================================================================== +--- util-linux-ng-2.12r+git20070330.orig/disk-utils/mkfs.bfs.c ++++ util-linux-ng-2.12r+git20070330/disk-utils/mkfs.bfs.c +@@ -170,7 +170,7 @@ main(int argc, char *argv[]) { + if (!S_ISBLK(statbuf.st_mode)) + fatal(_("%s is not a block special device"), device); + +- fd = open(device, O_RDWR); ++ fd = open(device, O_RDWR | O_EXCL); + if (fd == -1) { + perror(device); + fatal(_("cannot open %s"), device); diff --git a/util-linux-2.12r-mount_swapon_swsuspend_resume.patch b/util-linux-2.12r-mount_swapon_swsuspend_resume.patch new file mode 100644 index 0000000..8bc8e98 --- /dev/null +++ b/util-linux-2.12r-mount_swapon_swsuspend_resume.patch @@ -0,0 +1,128 @@ +## 30swsusp-resume.dpatch by Jeff Bailey +Index: util-linux-ng-2.12r+git20070330/mount/swapon.c +=================================================================== +--- util-linux-ng-2.12r+git20070330.orig/mount/swapon.c ++++ util-linux-ng-2.12r+git20070330/mount/swapon.c +@@ -10,7 +10,9 @@ + #include + #include + #include ++#include + #include ++#include + #include "xmalloc.h" + #include "swap_constants.h" + #include "swapargs.h" +@@ -23,6 +25,7 @@ + + #define _PATH_FSTAB "/etc/fstab" + #define PROC_SWAPS "/proc/swaps" ++#define PATH_MKSWAP "/sbin/mkswap" + + #define SWAPON_NEEDS_TWO_ARGS + +@@ -179,6 +182,85 @@ display_summary(void) + return 0 ; + } + ++/* ++ * It's better do swsuspend detection by follow routine than ++ * include huge mount_guess_fstype.o to swapon. We need only ++ * swsuspend and no the others filesystems. ++ */ ++#ifdef HAVE_LIBBLKID ++static int ++swap_is_swsuspend(const char *device) { ++ const char *type = blkid_get_tag_value(blkid, "TYPE", device); ++ ++ if (type && strcmp(type, "swsuspend")==0) ++ return 0; ++ return 1; ++} ++#else ++static int ++swap_is_swsuspend(const char *device) { ++ int fd, re = 1, n = getpagesize() - 10; ++ char buf[10]; ++ ++ fd = open(device, O_RDONLY); ++ if (fd < 0) ++ return -1; ++ ++ if (lseek(fd, n, SEEK_SET) >= 0 && ++ read(fd, buf, sizeof buf) == sizeof buf && ++ (memcmp("S1SUSPEND", buf, 9)==0 || ++ memcmp("S2SUSPEND", buf, 9)==0 || ++ memcmp("ULSUSPEND", buf, 9)==0)) ++ re = 0; ++ ++ close(fd); ++ return re; ++} ++#endif ++ ++/* calls mkswap */ ++static int ++swap_reinitialize(const char *device) { ++ const char *label = mount_get_volume_label_by_spec(device); ++ pid_t pid; ++ ++ switch((pid=fork())) { ++ case -1: /* fork error */ ++ fprintf(stderr, _("%s: cannot fork: %s\n"), ++ progname, strerror(errno)); ++ return -1; ++ ++ case 0: /* child */ ++ if (label && *label) ++ execl(PATH_MKSWAP, PATH_MKSWAP, "-L", label, device, NULL); ++ else ++ execl(PATH_MKSWAP, PATH_MKSWAP, device, NULL); ++ exit(1); /* error */ ++ ++ default: /* parent */ ++ { ++ int status; ++ int ret; ++ ++ do { ++ if ((ret = waitpid(pid, &status, 0)) < 0 ++ && errno == EINTR) ++ continue; ++ else if (ret < 0) { ++ fprintf(stderr, _("%s: waitpid: %s\n"), ++ progname, strerror(errno)); ++ return -1; ++ } ++ } while (0); ++ ++ /* mkswap returns: 0=suss, 1=error */ ++ if (WIFEXITED(status) && WEXITSTATUS(status)==0) ++ return 0; /* ok */ ++ } ++ } ++ return -1; /* error */ ++} ++ + static int + do_swapon(const char *orig_special, int prio) { + int status; +@@ -202,6 +284,18 @@ do_swapon(const char *orig_special, int + return -1; + } + ++ /* We have to reinitialize swap with old (=useless) software suspend ++ * data. The problem is that if we don't do it, then we get data ++ * corruption the next time with suspended on. ++ */ ++ if (swap_is_swsuspend(special)==0) { ++ fprintf(stdout, _("%s: %s: software suspend data detected. " ++ "Reinitializing the swap.\n"), ++ progname, special); ++ if (swap_reinitialize(special) < 0) ++ return -1; ++ } ++ + /* people generally dislike this warning - now it is printed + only when `verbose' is set */ + if (verbose) { diff --git a/util-linux-2.13-loop.patch b/util-linux-2.13-loop.patch new file mode 100644 index 0000000..ca5698c --- /dev/null +++ b/util-linux-2.13-loop.patch @@ -0,0 +1,32 @@ +--- util-linux-ng-2.13rc2+git20070725/mount/lomount.c.org 2007-08-16 17:09:33.258902000 +0200 ++++ util-linux-ng-2.13rc2+git20070725/mount/lomount.c 2007-08-16 17:09:43.016135000 +0200 +@@ -398,6 +398,7 @@ + } + if (ioctl (fd, LOOP_CLR_FD, 0) < 0) { + perror ("ioctl: LOOP_CLR_FD"); ++ close(fd); + return 1; + } + close (fd); +--- util-linux-ng-2.13rc2+git20070725/mount/fsprobe_volumeid.c.org 2007-08-16 18:16:03.120065000 +0200 ++++ util-linux-ng-2.13rc2+git20070725/mount/fsprobe_volumeid.c 2007-08-16 18:27:43.967526000 +0200 +@@ -34,8 +34,10 @@ + return NULL; + + id = volume_id_open_fd(fd); +- if (!id) ++ if (!id) { ++ close(fd); + return NULL; ++ } + + /* TODO: use blkdev_get_size() */ + if (ioctl(fd, BLKGETSIZE64, &size) != 0) +@@ -61,6 +63,7 @@ + } + + volume_id_close(id); ++ close(fd); + return value; + } + diff --git a/util-linux-2.13-mount_create_mtab.patch b/util-linux-2.13-mount_create_mtab.patch new file mode 100644 index 0000000..4d26d69 --- /dev/null +++ b/util-linux-2.13-mount_create_mtab.patch @@ -0,0 +1,13 @@ +Index: util-linux-ng-2.13rc2+git20070725/mount/mount.c +=================================================================== +--- util-linux-ng-2.13rc2+git20070725.orig/mount/mount.c ++++ util-linux-ng-2.13rc2+git20070725/mount/mount.c +@@ -546,7 +546,7 @@ create_mtab (void) { + char *extra_opts; + parse_opts (fstab->m.mnt_opts, &flags, &extra_opts); + mnt.mnt_dir = "/"; +- mnt.mnt_fsname = canonicalize (fstab->m.mnt_fsname); ++ mnt.mnt_fsname = fsprobe_get_devname(fstab->m.mnt_fsname); + mnt.mnt_type = fstab->m.mnt_type; + mnt.mnt_opts = fix_opts_string (flags, extra_opts, NULL); + mnt.mnt_freq = mnt.mnt_passno = 0; diff --git a/util-linux-2.13-mount_fd_leak.patch b/util-linux-2.13-mount_fd_leak.patch new file mode 100644 index 0000000..d88ec05 --- /dev/null +++ b/util-linux-2.13-mount_fd_leak.patch @@ -0,0 +1,12 @@ +Index: util-linux-ng-2.13rc2+git20070725/mount/lomount.c +=================================================================== +--- util-linux-ng-2.13rc2+git20070725.orig/mount/lomount.c ++++ util-linux-ng-2.13rc2+git20070725/mount/lomount.c +@@ -325,6 +325,7 @@ set_loop(const char *device, const char + } + if ((fd = open(device, mode)) < 0) { + perror (device); ++ close(ffd); + return 1; + } + *loopro = (mode == O_RDONLY); diff --git a/util-linux-2.13-schedutils_error_handling.patch b/util-linux-2.13-schedutils_error_handling.patch new file mode 100644 index 0000000..2bd26b2 --- /dev/null +++ b/util-linux-2.13-schedutils_error_handling.patch @@ -0,0 +1,55 @@ +Original patch from Bernhard Voelker. + +Index: util-linux-ng-2.13rc2+git20070725/schedutils/ionice.c +=================================================================== +--- util-linux-ng-2.13rc2+git20070725.orig/schedutils/ionice.c ++++ util-linux-ng-2.13rc2+git20070725/schedutils/ionice.c +@@ -107,7 +107,7 @@ int main(int argc, char *argv[]) + case 'h': + default: + usage(); +- exit(0); ++ exit(EXIT_SUCCESS); + } + } + +@@ -125,7 +125,7 @@ int main(int argc, char *argv[]) + break; + default: + printf("bad prio class %d\n", ioprio_class); +- return 1; ++ exit(EXIT_FAILURE); + } + + if (!set) { +@@ -134,9 +134,10 @@ int main(int argc, char *argv[]) + + ioprio = ioprio_get(IOPRIO_WHO_PROCESS, pid); + +- if (ioprio == -1) ++ if (ioprio == -1) { + perror("ioprio_get"); +- else { ++ exit(EXIT_FAILURE); ++ } else { + ioprio_class = ioprio >> IOPRIO_CLASS_SHIFT; + if (ioprio_class != IOPRIO_CLASS_IDLE) { + ioprio = ioprio & 0xff; +@@ -147,11 +148,15 @@ int main(int argc, char *argv[]) + } else { + if (ioprio_set(IOPRIO_WHO_PROCESS, pid, ioprio | ioprio_class << IOPRIO_CLASS_SHIFT) == -1) { + perror("ioprio_set"); +- return 1; ++ exit(EXIT_FAILURE); + } + +- if (argv[optind]) ++ if (argv[optind]) { + execvp(argv[optind], &argv[optind]); ++ /* execvp should never return */ ++ perror("execvp"); ++ exit(EXIT_FAILURE); ++ } + } + + return 0; diff --git a/util-linux-2.13-sys_utils_build_rdev_x86_64.patch b/util-linux-2.13-sys_utils_build_rdev_x86_64.patch new file mode 100644 index 0000000..6e9381d --- /dev/null +++ b/util-linux-2.13-sys_utils_build_rdev_x86_64.patch @@ -0,0 +1,16 @@ +Index: util-linux-ng-2.13-rc1/sys-utils/Makefile.am +=================================================================== +--- util-linux-ng-2.13-rc1.orig/sys-utils/Makefile.am ++++ util-linux-ng-2.13-rc1/sys-utils/Makefile.am +@@ -26,6 +26,11 @@ usrsbinexec_PROGRAMS += rdev + man_MANS += rdev.8 ramsize.8 rootflags.8 vidmode.8 + RDEV_LINKS = ramsize vidmode rootflags + endif ++if ARCH_86_64 ++usrsbinexec_PROGRAMS += rdev ++man_MANS += rdev.8 ramsize.8 rootflags.8 vidmode.8 ++RDEV_LINKS = ramsize vidmode rootflags ++endif + endif + + SETARCH_LINKS = linux32 linux64 diff --git a/util-linux-ng-2.13rc2+git20070725.tar.bz2 b/util-linux-ng-2.13rc2+git20070725.tar.bz2 new file mode 100644 index 0000000..bd0e5e3 --- /dev/null +++ b/util-linux-ng-2.13rc2+git20070725.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74640e1af0289d3be9397c8a7c8b62f147a3dbfad232fd4a7ec15a41e9ac1cf8 +size 1544622 diff --git a/util-linux-ng-CVE-2007-5191.diff b/util-linux-ng-CVE-2007-5191.diff new file mode 100644 index 0000000..a05de49 --- /dev/null +++ b/util-linux-ng-CVE-2007-5191.diff @@ -0,0 +1,50 @@ +commit ebbeb2c7ac1b00b6083905957837a271e80b187e +Author: Ludwig Nussel +Date: Thu Sep 20 14:57:20 2007 +0200 + + mount: doesn't drop privileges properly when calling helpers + + {,u}mount calls setuid() and setgid() in the wrong order and doesn't checking + the return value of set{u,g}id(() when running helpers like mount.nfs. + + Signed-off-by: Ludwig Nussel + Signed-off-by: Karel Zak + +Index: util-linux-ng-2.13rc2+git20070725/mount/mount.c +=================================================================== +--- util-linux-ng-2.13rc2+git20070725.orig/mount/mount.c ++++ util-linux-ng-2.13rc2+git20070725/mount/mount.c +@@ -646,8 +646,12 @@ check_special_mountprog(const char *spec + char *oo, *mountargs[10]; + int i = 0; + +- setuid(getuid()); +- setgid(getgid()); ++ if(setgid(getgid()) < 0) ++ die(EX_FAIL, _("mount: cannot set group id: %s"), strerror(errno)); ++ ++ if(setuid(getuid()) < 0) ++ die(EX_FAIL, _("mount: cannot set user id: %s"), strerror(errno)); ++ + oo = fix_opts_string (flags, extra_opts, NULL); + mountargs[i++] = mountprog; /* 1 */ + mountargs[i++] = (char *) spec; /* 2 */ +Index: util-linux-ng-2.13rc2+git20070725/mount/umount.c +=================================================================== +--- util-linux-ng-2.13rc2+git20070725.orig/mount/umount.c ++++ util-linux-ng-2.13rc2+git20070725/mount/umount.c +@@ -102,8 +102,12 @@ check_special_umountprog(const char *spe + char *umountargs[8]; + int i = 0; + +- setuid(getuid()); +- setgid(getgid()); ++ if(setgid(getgid()) < 0) ++ die(EX_FAIL, _("umount: cannot set group id: %s"), strerror(errno)); ++ ++ if(setuid(getuid()) < 0) ++ die(EX_FAIL, _("umount: cannot set user id: %s"), strerror(errno)); ++ + umountargs[i++] = umountprog; + umountargs[i++] = xstrdup(node); + if (nomtab) diff --git a/util-linux-ng-add-loop_fish2-compatability.diff b/util-linux-ng-add-loop_fish2-compatability.diff new file mode 100644 index 0000000..0fcdf4f --- /dev/null +++ b/util-linux-ng-add-loop_fish2-compatability.diff @@ -0,0 +1,38 @@ +Index: util-linux-ng-2.13rc2+git20070725/mount/lomount.c +=================================================================== +--- util-linux-ng-2.13rc2+git20070725.orig/mount/lomount.c ++++ util-linux-ng-2.13rc2+git20070725/mount/lomount.c +@@ -338,13 +338,11 @@ set_loop(const char *device, const char + + if (encryption && *encryption) { + // a hint for suse users +- if(!strcmp(encryption, "twofishSL92")) { +- fprintf(stderr, _("twofishSL92 is not supported via cryptoloop, please use dm-crypt to access the volume\n")); +- close(fd); +- close(ffd); +- return 1; +- } +- if (digits_only(encryption)) { ++ if(!phash && (!strcmp(encryption, "twofishSL92") || (!strcmp(encryption, "twofish") && !keysz))) { ++ fprintf(stderr,"Switching to old S.u.S.E. loop_fish2 compatibility mode.\n"); ++ fprintf(stderr, _("Warning: This mode is deprecated, support for it will be removed in the future.\n")); ++ loopinfo64.lo_encrypt_type = 3; // LO_CRYPT_FISH ++ } else if (digits_only(encryption)) { + loopinfo64.lo_encrypt_type = atoi(encryption); + } else { + // check for something like twofish256 +@@ -405,6 +403,14 @@ set_loop(const char *device, const char + hfunc = sha512_hash_buffer; + if(loopinfo64.lo_encrypt_key_size == 24) hfunc = sha384_hash_buffer; + if(loopinfo64.lo_encrypt_key_size == 32) hfunc = sha512_hash_buffer; ++ } else if(loopinfo64.lo_encrypt_type == 3 ) { // LO_CRYPT_FISH ++ if(!strcmp(encryption, "twofishSL92")) { ++ hfunc = sha512_hash_buffer; ++ loopinfo64.lo_encrypt_key_size = 32; ++ } else { ++ hfunc = phash_rmd160; ++ loopinfo64.lo_encrypt_key_size = 20; ++ } + } else { + hfunc = phash_none; + loopinfo64.lo_encrypt_key_size = keysz?keysz>>3:LO_KEY_SIZE; diff --git a/util-linux-ng-fix-buffer-overflow.diff b/util-linux-ng-fix-buffer-overflow.diff new file mode 100644 index 0000000..a1b2492 --- /dev/null +++ b/util-linux-ng-fix-buffer-overflow.diff @@ -0,0 +1,55 @@ +From 0e7b44f7f89291d8ae75e4f099d8aa2bcca1cfc5 Mon Sep 17 00:00:00 2001 +From: Ludwig Nussel +Date: Tue, 9 Oct 2007 14:34:15 +0200 +Subject: [PATCH] fix buffer overflow + +Signed-off-by: Ludwig Nussel +--- + mount/lomount.c | 13 +++++++++---- + 1 files changed, 9 insertions(+), 4 deletions(-) + +Index: util-linux-ng-2.13rc2+git20070725/mount/lomount.c +=================================================================== +--- util-linux-ng-2.13rc2+git20070725.orig/mount/lomount.c ++++ util-linux-ng-2.13rc2+git20070725/mount/lomount.c +@@ -25,8 +25,8 @@ + #include "xstrncpy.h" + #include "nls.h" + +-#ifndef MAX +-#define MAX(a,b) ((a>b)?(a):(b)) ++#ifndef MIN ++#define MIN(a,b) ((a>3; + } + ++ if((unsigned)loopinfo64.lo_encrypt_key_size > sizeof(loopinfo64.lo_encrypt_key)) { ++ fprintf(stderr, _("invalid key length\n")); ++ return 1; ++ } ++ + if (phash) { + if(!strcasecmp(phash, "sha512")) { + hfunc = sha512_hash_buffer; diff --git a/util-linux.changes b/util-linux.changes index 1389521..61fb472 100644 --- a/util-linux.changes +++ b/util-linux.changes @@ -1,85 +1,9 @@ ------------------------------------------------------------------- -Thu Feb 7 12:41:25 CET 2008 - mkoenig@suse.de +Fri Oct 12 14:52:21 CEST 2007 - lnussel@suse.de -- update to version 2.13.1: - mount: - * -L|-U segfault when label or uuid doesn't exist - * chain of symlinks to fstab causes use of pointer after free - * don't call canonicalize(SPEC) for cifs, smbfs and nfs - * improve error message when helper program not present - losetup: - * fix errno usage - mkswap: - * possible to crash with SELinux relabeling support - sfdisk: - * allow partitioning drives of over 2^31 sectors - hwclock: - * check for ENODEV -- mount: fix problem with device canonicalization when using - persistent name in fstab but call mount with real bd name -- patches merged: - util-linux-2.13-mount_fd_leak.patch - -------------------------------------------------------------------- -Tue Dec 18 15:55:19 CET 2007 - mkoenig@suse.de - -- add temporary workaround for broken RTC update interrupts - [#338419] - -------------------------------------------------------------------- -Mon Dec 3 11:03:57 CET 2007 - ro@suse.de - -- remove "arch", in coreutils now - -------------------------------------------------------------------- -Thu Nov 29 17:51:17 CET 2007 - lnussel@suse.de - -- update crypto patch - * fix mount buffer overflow when reading the passphrase (#332148) - * add loop_fish2 compatability code to losetup/mount again (#332095) - * change default hash size for 128bit keys to sha256 again - - -------------------------------------------------------------------- -Wed Nov 21 13:43:31 CET 2007 - mkoenig@suse.de - -- update to git20071121: - add sector size check for mkfs.minix [#308256] - fix canonicalization for cifs [#338375] -- provide Short-Description for raw init script -- add rpmlintrc - -------------------------------------------------------------------- -Tue Nov 20 17:49:35 CET 2007 - mkoenig@suse.de - -- fix raw path in init script - -------------------------------------------------------------------- -Tue Nov 6 16:11:02 CET 2007 - mkoenig@suse.de - -- update to 2.13.0.1+git20071106 -- prevent loop mounting the same file twice [#240653] -- merged upstream: - util-linux-2.13-mount_helper_fix.patch - util-linux-2.13-hwclock_rtc_option.patch - -------------------------------------------------------------------- -Thu Oct 4 22:24:04 CEST 2007 - bg@suse.de - -- don't use parisc, parisc32 and parisc64. - -------------------------------------------------------------------- -Mon Oct 1 17:08:06 CEST 2007 - mkoenig@suse.de - -- update to version 2.13 - merged upstream: - util-linux-2.12r-disk_utils_mkfs_open_exclusive.patch - util-linux-2.13-loop.patch - util-linux-2.13-mount_create_mtab.patch - util-linux-2.13-schedutils_error_handling.patch - util-linux-2.13-sys_utils_build_rdev_x86_64.patch -- fix hwclock --rtc option [#326106] -- fix setuid/setgid mixup and error checking [#327022] +- fix mount not checking return value of setuid (#327022, CVE-2007-5191) +- fix mount buffer overflow when reading the passphrase (#332148) +- add loop_fish2 compatability code to losetup/mount again (#332095) ------------------------------------------------------------------- Fri Sep 14 11:24:33 CEST 2007 - mkoenig@suse.de diff --git a/util-linux.spec b/util-linux.spec index 5e948dc..0951873 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -1,7 +1,7 @@ # -# spec file for package util-linux (Version 2.13.1) +# spec file for package util-linux (Version 2.12r+2.13rc2+git20070725) # -# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine # package are under the same license as the package itself. # @@ -20,11 +20,11 @@ PreReq: %install_info_prereq permissions License: BSD 3-Clause; GPL v2 or later Group: System/Base AutoReqProv: on -Version: 2.13.1 -Release: 1 +Version: 2.12r+2.13rc2+git20070725 +Release: 24.1 +%define upver 2.13rc2+git20070725 Summary: A collection of basic system utilities -Source: ftp://ftp.kernel.org/pub/linux/utils/util-linux/%name-ng-%version.tar.bz2 -Source1: util-linux-2.13-rpmlintrc +Source: ftp://ftp.kernel.org/pub/linux/utils/util-linux/%name-ng-%upver.tar.bz2 Source2: nologin.c Source3: nologin.8 Source4: raw.init @@ -46,30 +46,39 @@ Source28: mkzimage_cmdline.8 Source29: mkzimage_cmdline.c Source30: README.largedisk ## -## util-linux patches +## util-linux ## +# # add hostid Patch1: util-linux-2.12-misc_utils_hostid.patch # 104405 - mount -a doesn't work with hotpluggable devices Patch2: util-linux-mount_opt_nofail.patch +# 176582 - If the user doesn't specify -t mount.fstype will never be called +#TODO: check alternative upstream fix +#Patch96: util-linux-2.12r-mount_external_prog_on_guess.patch # 160822 - fix for 153657 Patch3: util-linux-2.12r-fdisk_cyl.patch +# 238687 - let mkfs tools open block devices with O_EXCL +Patch4: util-linux-2.12r-disk_utils_mkfs_open_exclusive.patch # 241372 - remove legacy warnings from fdisk -Patch4: util-linux-2.12r-fdisk_remove_bogus_warnings.patch -# 304861 - support password hashing and key length -Patch6: util-linux-2.13-fdisk_cfdisk_ncursesw.patch -# 338419 -Patch7: util-linux-2.13-hwclock_rtc_wait_busy_tempfix.patch -# in upstream git, but not yet released -Patch8: util-linux-2.13.1-canonicalize_loopfile_name.patch -Patch9: util-linux-2.13.1-prevent_loop_mounting_the_same_file_twice.patch -Patch10: util-linux-2.13.1-mkfs.minix_add_sectorsize_check.patch -Patch11: util-linux-2.13.1-mkfs.minix_device_size_cleanup.patch -# -Patch12: util-linux-2.13.1-getfs_fix.patch +Patch5: util-linux-2.12r-fdisk_remove_bogus_warnings.patch # 254437 - swapon should automatically reset the suspend signature -Patch13: util-linux-ng-2.13-swapon-swsuspend.patch -Patch20: util-linux-mount_losetup_crypto.patch +# TODO: Needs to be ported to new version +Patch38: util-linux-2.12r-mount_swapon_swsuspend_resume.patch +# suse48633 - util-linux on x86_64 does not contain "rdev" and "vidmode" +Patch6: util-linux-2.13-sys_utils_build_rdev_x86_64.patch +# 297172 - mount does not free loop devices if it fails +Patch7: util-linux-2.13-loop.patch +Patch8: util-linux-2.13-mount_create_mtab.patch +Patch9: util-linux-2.13-schedutils_error_handling.patch +# 304861 - support password hashing and key length +Patch10: cryptsetup-2.13-crypto.diff +Patch11: util-linux-2.13-mount_fd_leak.patch +Patch12: util-linux-2.13-fdisk_cfdisk_ncursesw.patch +# security fix +Patch13: util-linux-ng-CVE-2007-5191.diff +Patch14: util-linux-ng-fix-buffer-overflow.diff +Patch15: util-linux-ng-add-loop_fish2-compatability.diff ## ## ## adjtimex @@ -103,11 +112,13 @@ Authors: Karel Zak %prep -%setup -q -a 9 -b 10 -b 11 -b 12 -b 13 -n %name-ng-%version +%setup -q -a 9 -b 10 -b 11 -b 12 -b 13 -n %name-ng-%upver %patch1 -p1 %patch2 -p1 %patch3 -p1 %patch4 -p1 +%patch5 -p1 +#%patch38 -p1 %patch6 -p1 %patch7 -p1 %patch8 -p1 @@ -116,8 +127,8 @@ Authors: %patch11 -p1 %patch12 -p1 %patch13 -p1 -%patch20 -p1 -#%patch38 -p1 +%patch14 -p1 +%patch15 -p1 # cd adjtimex-* %patch50 -p1 @@ -164,6 +175,7 @@ CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE " INSTALL_PROGRAM='$(INSTALL)' \ --infodir=%{_infodir} \ %{_target_cpu}-suse-linux make +make check cd .. # klogconsole build cd klogconsole @@ -192,16 +204,13 @@ CFLAGS=-DCONFIG_SMP --enable-raw \ --enable-rdev \ --enable-write \ + --enable-arch \ --disable-use-tty-group \ CFLAGS="$CFLAGS $RPM_OPT_FLAGS" make gcc $RPM_OPT_FLAGS -o nologin nologin.c gcc $RPM_OPT_FLAGS -o mkzimage_cmdline %{S:29} -%check -cd ../time-%{time_ver} -make check - %install mkdir -p "$RPM_BUILD_ROOT"{/etc/init.d,%{_mandir}/man{1,8},\ /bin,/sbin,/usr/bin,/usr/sbin,%{_infodir}} @@ -280,16 +289,7 @@ rm -f $RPM_BUILD_ROOT/usr/bin/ppc rm -f $RPM_BUILD_ROOT/usr/bin/ppc32 rm -f $RPM_BUILD_ROOT/usr/bin/ppc64 rm -f $RPM_BUILD_ROOT/usr/bin/ia64 -rm -f $RPM_BUILD_ROOT/usr/bin/parisc -rm -f $RPM_BUILD_ROOT/usr/bin/parisc32 -rm -f $RPM_BUILD_ROOT/usr/bin/parisc64 rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/setarch.8 -rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/i386.8 -rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/x86_64.8 -rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/linux{32,64}.8 -rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/ia64.8 -rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/s390{,x}.8 -rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/ppc{,32,64}.8 # arch dependent %ifarch s390 s390x rm -f $RPM_BUILD_ROOT/etc/fdprm @@ -358,6 +358,7 @@ fi %config(noreplace) %attr(644,root,root) /etc/raw %config(noreplace) /etc/filesystems /usr/sbin/rcraw +/bin/arch /bin/dmesg /bin/more /bin/mount @@ -434,6 +435,7 @@ fi %{_infodir}/freeramdisk.info*.gz %{_infodir}/time.info*.gz %{_infodir}/which.info*.gz +%{_mandir}/man1/arch.1.gz %{_mandir}/man1/cal.1.gz %{_mandir}/man1/chrt.1.gz %{_mandir}/man1/col.1.gz @@ -563,85 +565,33 @@ fi #/usr/bin/i386 #/usr/bin/ia64 #%endif - %changelog -* Thu Feb 07 2008 mkoenig@suse.de -- update to version 2.13.1: - mount: - * -L|-U segfault when label or uuid doesn't exist - * chain of symlinks to fstab causes use of pointer after free - * don't call canonicalize(SPEC) for cifs, smbfs and nfs - * improve error message when helper program not present - losetup: - * fix errno usage - mkswap: - * possible to crash with SELinux relabeling support - sfdisk: - * allow partitioning drives of over 2^31 sectors - hwclock: - * check for ENODEV -- mount: fix problem with device canonicalization when using - persistent name in fstab but call mount with real bd name -- patches merged: - util-linux-2.13-mount_fd_leak.patch -* Tue Dec 18 2007 mkoenig@suse.de -- add temporary workaround for broken RTC update interrupts - [#338419] -* Mon Dec 03 2007 ro@suse.de -- remove "arch", in coreutils now -* Thu Nov 29 2007 lnussel@suse.de -- update crypto patch - * fix mount buffer overflow when reading the passphrase (#332148) - * add loop_fish2 compatability code to losetup/mount again (#332095) - * change default hash size for 128bit keys to sha256 again -* Wed Nov 21 2007 mkoenig@suse.de -- update to git20071121: - add sector size check for mkfs.minix [#308256] - fix canonicalization for cifs [#338375] -- provide Short-Description for raw init script -- add rpmlintrc -* Tue Nov 20 2007 mkoenig@suse.de -- fix raw path in init script -* Tue Nov 06 2007 mkoenig@suse.de -- update to 2.13.0.1+git20071106 -- prevent loop mounting the same file twice [#240653] -- merged upstream: - util-linux-2.13-mount_helper_fix.patch - util-linux-2.13-hwclock_rtc_option.patch -* Thu Oct 04 2007 bg@suse.de -- don't use parisc, parisc32 and parisc64. -* Mon Oct 01 2007 mkoenig@suse.de -- update to version 2.13 - merged upstream: - util-linux-2.12r-disk_utils_mkfs_open_exclusive.patch - util-linux-2.13-loop.patch - util-linux-2.13-mount_create_mtab.patch - util-linux-2.13-schedutils_error_handling.patch - util-linux-2.13-sys_utils_build_rdev_x86_64.patch -- fix hwclock --rtc option [#326106] -- fix setuid/setgid mixup and error checking [#327022] -* Fri Sep 14 2007 mkoenig@suse.de +* Fri Oct 12 2007 - lnussel@suse.de +- fix mount not checking return value of setuid (#327022, CVE-2007-5191) +- fix mount buffer overflow when reading the passphrase (#332148) +- add loop_fish2 compatability code to losetup/mount again (#332095) +* Fri Sep 14 2007 - mkoenig@suse.de - link cfdisk against libncursesw instead libncurses to fix broken utf-8 characters [#307353] -* Wed Aug 29 2007 mkoenig@suse.de +* Wed Aug 29 2007 - mkoenig@suse.de - fix fd leaks in previous patch -* Tue Aug 28 2007 lnussel@suse.de +* Tue Aug 28 2007 - lnussel@suse.de - add support for specifying the key length and password hash algorithm [#304861] -* Fri Aug 24 2007 mkoenig@suse.de +* Fri Aug 24 2007 - mkoenig@suse.de - avoid duplicates of root fs if defined with LABEL in fstab [#297959] - fix ionice error handling [#301675] -* Thu Aug 16 2007 ssommer@suse.de +* Thu Aug 16 2007 - ssommer@suse.de - free loop devices when mount fails [#297172] -* Wed Jul 25 2007 mkoenig@suse.de +* Wed Jul 25 2007 - mkoenig@suse.de - update to git20070725 - removed patches (merged upstream): util-linux-2.12r-mount_mount.8_xfs_update.patch util-linux-2.12r-sys_utils_readprofile_mapfile.patch util-linux-2.12r-disk_utils_mkswap_fix.patch util-linux-2.13-schedutils_ionice_idle.patch -* Tue Jul 17 2007 mkoenig@suse.de +* Tue Jul 17 2007 - mkoenig@suse.de - updated to version 2.13-rc2: * add wakertc - cleanup ionice usage [#270251] @@ -655,7 +605,7 @@ fi util-linux-2.12a-mount_mountpointwithcolon.patch util-linux-2.12a-mount_procswapcheck.patch util-linux-2.12q-mount_umount2_not_static.patch -* Fri Jul 13 2007 mkoenig@suse.de +* Fri Jul 13 2007 - mkoenig@suse.de - replace hotplug with nofail option and fix it to not use syscall reserved values. - removed patch @@ -663,16 +613,16 @@ fi it is intentional that suid hwclock capabilities are limited - removed patch (fixed upstream) util-linux-2.12q-mount_--move.patch -* Mon Jul 09 2007 mkoenig@suse.de +* Mon Jul 09 2007 - mkoenig@suse.de - add libuuid-devel to BuildRequires to let mkswap use UUIDs -* Thu Jul 05 2007 mkoenig@suse.de +* Thu Jul 05 2007 - mkoenig@suse.de - use %%config(noreplace) for /etc/filesystems - Keep rdev stuff for x86_64 util-linux-2.13-sys_utils_build_rdev_x86_64.patch - removed patches (merged upstream) util-linux-2.12r-misc_utils_cal_formatting.patch util-linux-2.12q-sys_utils_ionice.patch -* Thu Jul 05 2007 mkoenig@suse.de +* Thu Jul 05 2007 - mkoenig@suse.de - update to 2.13-rc1: * mount fixes * agetty: add 'O' escape code to display domain name @@ -686,23 +636,23 @@ fi util-linux-2.13-misc_utils_cal_ncurses.patch util-linux-2.13-mount_volumeid_label.patch - use %%find_lang -* Thu Jun 21 2007 mkoenig@suse.de +* Thu Jun 21 2007 - mkoenig@suse.de - use encoded label names with volume_id [#232929] util-linux-2.13-mount_volumeid_label.patch -* Thu Jun 14 2007 mkoenig@suse.de +* Thu Jun 14 2007 - mkoenig@suse.de - mkzimage_cmdline: activate commandline if used with -s [#279935] -* Wed Jun 13 2007 mkoenig@suse.de +* Wed Jun 13 2007 - mkoenig@suse.de - schedutils: let chrt accept pid 0 for current process and fix some documentation bugs [#266879] util-linux-2.13-schedutils_chrt.patch -* Wed Jun 06 2007 mkoenig@suse.de +* Wed Jun 06 2007 - mkoenig@suse.de - update to git20070530 - removed patches util-linux-2.13-mount_volume_id.patch util-linux-2.12r-mount_by_uuid.patch util-linux-2.13-build_gnu_source.patch - fix build with ncurses -* Tue Jun 05 2007 mkoenig@suse.de +* Tue Jun 05 2007 - mkoenig@suse.de - update to git20070509 mount: NFS code removed (use mount.nfs{,4} from nfs-utils) - remove sm-notify (nfs-utils) @@ -719,16 +669,16 @@ fi util-linux-2.13-mount_nfs_timeo.patch util-linux-mount_nfs.8.patch util-linux-mount_warn_nfsudp.patch -* Tue Jun 05 2007 pth@suse.de +* Tue Jun 05 2007 - pth@suse.de - Update to which-2.16, mainly because regenerating configure with newer autotools works. - Fix the patch for AC_CHECK_STATICLIB - Our distribution doesn't install libiberty.a, so pass --disable-iberty to configure of which to not use a libiberty from somewhere else. -* Mon Jun 04 2007 pth@suse.de +* Mon Jun 04 2007 - pth@suse.de - Make configure of which search for static libs in lib64 subdirs. -* Mon Apr 23 2007 mkoenig@suse.de +* Mon Apr 23 2007 - mkoenig@suse.de - update to git20070412 - remove chkdupexe and scriptreplay to get rid of the perl dependency [#265757] @@ -737,10 +687,10 @@ fi - merged patches: util-linux-2.13-misc_utils_add_man_scriptreplay.patch util-linux-2.13-tests_missing_include.patch -* Mon Apr 16 2007 mkoenig@suse.de +* Mon Apr 16 2007 - mkoenig@suse.de - fix initialization of offset in util-linux-2.12r-mount_racy_loop.patch [#264225] -* Tue Apr 10 2007 mkoenig@suse.de +* Tue Apr 10 2007 - mkoenig@suse.de - update to version git20070330 of new forked development tree - removed Suse crypto patches for losetup [FATE#302001] - removed binaries: @@ -780,205 +730,205 @@ fi detect also x86_64 as INTEL architecture - rename patches to identify them clearly by subsystem - schedutils now part of util-linux itself -* Wed Apr 04 2007 mkoenig@suse.de +* Wed Apr 04 2007 - mkoenig@suse.de - add Supplements line [FATE#301966] -* Mon Mar 26 2007 rguenther@suse.de +* Mon Mar 26 2007 - rguenther@suse.de - add ncurses-devel and zlib-devel BuildRequires -* Thu Mar 15 2007 mkoenig@suse.de +* Thu Mar 15 2007 - mkoenig@suse.de - mount: Let swapon automatically reinitialize a suspended swap partition [#254437] -* Fri Mar 09 2007 mkoenig@suse.de +* Fri Mar 09 2007 - mkoenig@suse.de - mount: fix mtablock patch to avoid mtab corruption [#226783] -* Thu Mar 08 2007 mkoenig@suse.de +* Thu Mar 08 2007 - mkoenig@suse.de - partx: fix warning for too long literal -* Wed Mar 07 2007 rguenther@suse.de +* Wed Mar 07 2007 - rguenther@suse.de - fix changelog entry order -* Tue Feb 27 2007 mkoenig@suse.de +* Tue Feb 27 2007 - mkoenig@suse.de - fix missing return code in util-linux-2.12r-losetup_password.patch - mount: fix race condition in mount -o loop [#242750] -* Mon Feb 12 2007 mkoenig@suse.de +* Mon Feb 12 2007 - mkoenig@suse.de - remove legacy warnings from fdisk [#241372] -* Fri Feb 02 2007 mkoenig@suse.de +* Fri Feb 02 2007 - mkoenig@suse.de - do not use O_EXCL for mkfs.cramfs [#241466] -* Wed Jan 31 2007 mkoenig@suse.de +* Wed Jan 31 2007 - mkoenig@suse.de - let mkfs tools open with O_EXCL [#238687] -* Tue Dec 12 2006 mkoenig@suse.de +* Tue Dec 12 2006 - mkoenig@suse.de - provide different return codes for losetup with encryption for empty and too short passwords. [#197493] -* Tue Dec 05 2006 mkoenig@suse.de +* Tue Dec 05 2006 - mkoenig@suse.de - default swap to V1 in any case [#205956] patch: util-linux-2.12r-mkswap_fix.patch - do not append addr option with each nfs remount [#130625] patch: util-linux-2.12r-nfs_remount_options.patch - add README.largedisk about fdisk partition size constraints [#153657] -* Tue Nov 07 2006 mkoenig@suse.de +* Tue Nov 07 2006 - mkoenig@suse.de - enable partx [#214992] -* Tue Oct 10 2006 mkoenig@suse.de +* Tue Oct 10 2006 - mkoenig@suse.de - Round up partition end LBA to a cylinder boundary during add_partition() [#174892] - Fix readprofile on ppc64 [#179122] - Fix cal formatting bug [#203469] -* Mon Oct 09 2006 mkoenig@suse.de +* Mon Oct 09 2006 - mkoenig@suse.de - Fix llseek issues. - swapon.c: Do not use PAGE_SIZE macro. -* Mon Aug 21 2006 mkoenig@suse.de +* Mon Aug 21 2006 - mkoenig@suse.de - Added sysfs to list of filesystems not to unmount with umount -a, resolves #190385 -* Mon Jun 12 2006 kay.sievers@suse.de +* Mon Jun 12 2006 - kay.sievers@suse.de - use libvolume_id from provided as a rpm by udev 094 -* Thu May 18 2006 jeffm@suse.com +* Wed May 17 2006 - jeffm@suse.com - Fixed support for calling external programs w/o -t , it would add mtab twice [#176582] -* Mon Apr 24 2006 hvogel@suse.de +* Mon Apr 24 2006 - hvogel@suse.de - document xfs dmapi mount options better [#158955] -* Fri Apr 21 2006 olh@suse.de +* Fri Apr 21 2006 - olh@suse.de - add mkzimage_cmdline to edit CHRP zImage kernel cmdline (168313) -* Tue Apr 18 2006 hvogel@suse.de +* Tue Apr 18 2006 - hvogel@suse.de - fix number of supported raw devices [#165570] -* Wed Mar 29 2006 olh@suse.de +* Wed Mar 29 2006 - olh@suse.de - clearify comments about mac disk label handling in fdisk -* Tue Mar 28 2006 hvogel@suse.de +* Tue Mar 28 2006 - hvogel@suse.de - more fixes for the fdiskwrap patch [#160822] -* Tue Mar 21 2006 okir@suse.de +* Tue Mar 21 2006 - okir@suse.de - Update nfs(5) manpage to document security flavors [#159368] -* Mon Mar 20 2006 hvogel@suse.de +* Mon Mar 20 2006 - hvogel@suse.de - fix numbers of supported raw devices to match the kernel [#158203] - make NFSv3 client support RPCSEC_GSS [#158401] - fix that if the user doesn't specify -t mount.fstype will never be called. [#155147] -* Fri Mar 10 2006 hvogel@suse.de +* Fri Mar 10 2006 - hvogel@suse.de - Fix init.d/raw script to parse device names with , in them correctly [#155653] -* Thu Mar 09 2006 hare@suse.de +* Thu Mar 09 2006 - hare@suse.de - Fix potential security hole in libvolume_id (#133256) -* Mon Mar 06 2006 hvogel@suse.de +* Mon Mar 06 2006 - hvogel@suse.de - patch fdiskmaclabel.h too -* Thu Mar 02 2006 hvogel@suse.de +* Thu Mar 02 2006 - hvogel@suse.de - axboe made fdisk not wrap at 2TB [#153657] -* Fri Feb 17 2006 lmuelle@suse.de +* Fri Feb 17 2006 - lmuelle@suse.de - Use cifs instead of smbfs if the source starts with // and we do not set a different fs type. -* Sun Feb 12 2006 olh@suse.de +* Sun Feb 12 2006 - olh@suse.de - cosmetic fix for option_hotplug declaration fix unininitalized string for unknown filesystems (#148855) -* Fri Feb 10 2006 hvogel@suse.de +* Fri Feb 10 2006 - hvogel@suse.de - mount should not put / in the mtab twice if mount -f / is called [#148409] - fix hostid printf [#149163] -* Wed Feb 01 2006 olh@suse.de +* Wed Feb 01 2006 - olh@suse.de - dont invent our own MS_FLAGS (#147132) -* Wed Feb 01 2006 ro@suse.de +* Wed Feb 01 2006 - ro@suse.de - fix typo in previous change, binary negation is "~" -* Fri Jan 27 2006 sscheler@suse.de +* Fri Jan 27 2006 - sscheler@suse.de - fixed mount hotplug option (#143352). now we don't send the MS_HOTPLUG flag to the kernel any longer, because the kernel doesn't know this option (EINVAL) and actually doesn't need to know about it. -* Fri Jan 27 2006 olh@suse.de +* Fri Jan 27 2006 - olh@suse.de - remove clock symlink, hwclock exists since 7 years -* Fri Jan 27 2006 olh@suse.de +* Fri Jan 27 2006 - olh@suse.de - lsprop and nvsetenv moved to powerpc-utils [#144758] -* Thu Jan 26 2006 hvogel@suse.de +* Thu Jan 26 2006 - hvogel@suse.de - Make nfsboot world readable [#145418] -* Wed Jan 25 2006 mls@suse.de +* Wed Jan 25 2006 - mls@suse.de - converted neededforbuild to BuildRequires -* Tue Jan 24 2006 mmj@suse.de +* Tue Jan 24 2006 - mmj@suse.de - Remove faulty nfs fallback code [#139019] -* Mon Jan 16 2006 mmj@suse.de +* Mon Jan 16 2006 - mmj@suse.de - Add patch for nsetenv to fix short reads/short writes [#142546] -* Wed Jan 11 2006 mmj@suse.de +* Wed Jan 11 2006 - mmj@suse.de - Update sm-notify [#141542] -* Wed Jan 04 2006 mmj@suse.de +* Wed Jan 04 2006 - mmj@suse.de - Update to 2.12r including since 2.12q: o cfdisk: fix a segfault with ReiserFS partitions o umount: disallow -r option for non-root users -* Tue Nov 22 2005 mmj@suse.de +* Tue Nov 22 2005 - mmj@suse.de - install proper renice manpage [#132470] -* Tue Nov 15 2005 uli@suse.de +* Tue Nov 15 2005 - uli@suse.de - umount2 is not static (only fails on ARM, surprisingly) - added ARM ionice syscalls -* Fri Nov 11 2005 hare@suse.de +* Fri Nov 11 2005 - hare@suse.de - Fix reverse-mapping of by-UUID and by-LABEL mounts. -* Thu Nov 10 2005 hare@suse.de +* Thu Nov 10 2005 - hare@suse.de - Fix a mishandling of by-UUID mounts. - Use libvolume_id from udev. -* Sat Oct 22 2005 mmj@suse.de +* Sat Oct 22 2005 - mmj@suse.de - Increase lsprop.c max property size to 4k [#128155] -* Mon Oct 10 2005 mmj@suse.de +* Mon Oct 10 2005 - mmj@suse.de - Add -fno-strict-aliasing to nfsmount_xdr.c -* Mon Oct 03 2005 mmj@suse.de +* Mon Oct 03 2005 - mmj@suse.de - Teach the mount manual page about nodiratime [#118987] -* Thu Sep 29 2005 mmj@suse.de +* Thu Sep 29 2005 - mmj@suse.de - Patch from jakub007@go2.pl to make mount --move update /etc/mtab correctly [#115129] -* Tue Sep 13 2005 mmj@suse.de +* Tue Sep 13 2005 - mmj@suse.de - Only allow root to pass -r to umount [#116741] -* Mon Sep 05 2005 mmj@suse.de +* Mon Sep 05 2005 - mmj@suse.de - MAC -> Mac [#104081] -* Fri Sep 02 2005 mmj@suse.de +* Fri Sep 02 2005 - mmj@suse.de - Don't package manual executable [#114849] -* Thu Sep 01 2005 mmj@suse.de +* Thu Sep 01 2005 - mmj@suse.de - Add patch for device-mapper mount by label support [#75966] -* Thu Sep 01 2005 ro@suse.de +* Thu Sep 01 2005 - ro@suse.de - provide and obsolete schedutils -* Tue Aug 23 2005 hvogel@suse.de +* Tue Aug 23 2005 - hvogel@suse.de - update ionice patch by axboe so that ionice will complain about missing sys_ioprio_set support, but it will still execute the process. -* Mon Aug 22 2005 hvogel@suse.de +* Mon Aug 22 2005 - hvogel@suse.de - Fix rpm verify output [#105807] (ghost entry for /var/lib/nfs/state) -* Mon Aug 22 2005 schwab@suse.de +* Mon Aug 22 2005 - schwab@suse.de - Fix stupid buffer overflow bug in cfdisk [#66020]. -* Wed Aug 17 2005 hare@suse.de +* Wed Aug 17 2005 - hare@suse.de - Add option 'hotplug' to mount (#104405) -* Mon Aug 15 2005 schwab@suse.de +* Mon Aug 15 2005 - schwab@suse.de - Always build with RPM_OPT_FLAGS. -* Thu Aug 11 2005 mmj@suse.de +* Thu Aug 11 2005 - mmj@suse.de - Patch from Patrick Kirsch to make fdisk detect MAC-fs [#104081] -* Wed Aug 03 2005 mmj@suse.de +* Wed Aug 03 2005 - mmj@suse.de - Merge schedutils to here (it's happened upstream already) -* Tue Aug 02 2005 mmj@suse.de +* Tue Aug 02 2005 - mmj@suse.de - Support for s390 and s390x -* Mon Aug 01 2005 mmj@suse.de +* Mon Aug 01 2005 - mmj@suse.de - It's not __ppc_ and __ppc64__ but __powerpc__ and __powerpc64__ -* Mon Aug 01 2005 mmj@suse.de +* Mon Aug 01 2005 - mmj@suse.de - Add ionice binary from Jens Axboe -* Wed Jun 29 2005 mmj@suse.de +* Wed Jun 29 2005 - mmj@suse.de - Document load and clearly issues about NFS over UDP [#80263] - Don't compile with -fsigned-char [#93886] -* Tue May 31 2005 okir@suse.de +* Tue May 31 2005 - okir@suse.de - Added NFSv4 support -* Mon May 09 2005 hvogel@suse.de +* Mon May 09 2005 - hvogel@suse.de - move hashalot and cryptsetup tools to util-linux-crypto -* Tue Apr 12 2005 mmj@suse.de +* Tue Apr 12 2005 - mmj@suse.de - bump TCP timeo to 600 [#76198] -* Tue Mar 29 2005 mmj@suse.de +* Tue Mar 29 2005 - mmj@suse.de - Add awareness of twofishSL92 [#74359] - Update hashalot to version 0.3 -* Mon Mar 14 2005 okir@suse.de +* Mon Mar 14 2005 - okir@suse.de - Changed sm-notify to recognize host names as well as addresses. -* Thu Mar 10 2005 mmj@suse.de +* Thu Mar 10 2005 - mmj@suse.de - Don't strip anything explicitly - Don't compile with -fno-strict-aliasing [#66020] -* Fri Feb 04 2005 schwab@suse.de +* Fri Feb 04 2005 - schwab@suse.de - Fix stupid programmer. -* Mon Jan 24 2005 meissner@suse.de +* Mon Jan 24 2005 - meissner@suse.de - implicit strcmp / strerror in setctsid fixed. - 0 -> NULL in an execl -* Fri Jan 21 2005 mmj@suse.de +* Fri Jan 21 2005 - mmj@suse.de - Sleep after inserting the raw module to make sure it's ready [#49807] - Update to 2.12q including since 2.12p: o New upstream maintainer - Adrian Bunk o sfdisk: add -G option o Updated translations -* Tue Jan 18 2005 okir@suse.de +* Tue Jan 18 2005 - okir@suse.de - Updated sm-notify; try not to stall bootup my moving the NSM state update after we've backgrounded (#49072). -* Mon Jan 10 2005 mmj@suse.de +* Mon Jan 10 2005 - mmj@suse.de - Update adjtimex to 1.20 - Update to util-linux-2.12p including since 2.12i: o cfdisk: fix number of new partition when partitions not in disk order @@ -1016,15 +966,15 @@ fi o umount: use special umount program if it exists o new flock binary o New messages -* Tue Nov 30 2004 mmj@suse.de +* Tue Nov 30 2004 - mmj@suse.de - Install ramsize, rdev, rootflags and vidmode on x86-64 [#48633] -* Fri Nov 12 2004 schwab@suse.de +* Fri Nov 12 2004 - schwab@suse.de - Don't install *fdisk on ia64. -* Fri Nov 12 2004 ro@suse.de +* Fri Nov 12 2004 - ro@suse.de - correct permissions handling for wall and write -* Tue Nov 09 2004 mmj@suse.de +* Tue Nov 09 2004 - mmj@suse.de - Fix segfault with mount -l [#48029] -* Fri Nov 05 2004 mmj@suse.de +* Fri Nov 05 2004 - mmj@suse.de - Update to util-linux-2.12i including: o MCONFIG: fix build conditions o chfn, chsh: add error checking @@ -1036,7 +986,7 @@ fi o sfdisk: correct typo in __attribute__used nonsense o sfdisk: use PACKED on __arm__ o sfdisk: fix warning printout -* Thu Nov 04 2004 mmj@suse.de +* Thu Nov 04 2004 - mmj@suse.de - Update to util-linux-2.12h including: o cfdisk: avoid crash if no partition table o elvtune: tell user that this only works on 2.4 kernels @@ -1051,19 +1001,19 @@ fi o mount: support jfs mount-by-label, improve reiserfs support o sfdisk: remove strange "ends in a digit" heuristic o *fdisk: use common disksize() routine -* Tue Oct 19 2004 mmj@suse.de +* Tue Oct 19 2004 - mmj@suse.de - Add patch from SGI for fdisk label [#47368] -* Tue Sep 28 2004 mmj@suse.de +* Tue Sep 28 2004 - mmj@suse.de - And another one [#46201] -* Thu Sep 16 2004 mmj@suse.de +* Wed Sep 15 2004 - mmj@suse.de - Add patch from Andries to fix cfdisk [#44996] -* Tue Sep 07 2004 mmj@suse.de +* Tue Sep 07 2004 - mmj@suse.de - Update to util-linux-2.12c including: o mount.8: added recent ext2 mount options o mount: support jfs mount-by-label, improve reiserfs support o sfdisk: remove strange "ends in a digit" heuristic o *fdisk: use common disksize() routine [#44678] -* Wed Aug 25 2004 mmj@suse.de +* Wed Aug 25 2004 - mmj@suse.de - Update to util-linux-2.12b including: o chsh: improved error message o dmesg: ask kernel proper buffer size @@ -1088,36 +1038,36 @@ fi Turkish, Ukrainian messages - Update the loop-AES patch, thanks to Sumit Bose - Change the minimum password length to 8 chars -* Tue Aug 24 2004 mmj@suse.de +* Tue Aug 24 2004 - mmj@suse.de - Fix signed/unsigned bug in lsprop [#44048] -* Wed Aug 18 2004 mmj@suse.de +* Wed Aug 18 2004 - mmj@suse.de - Readd patch that got lost to make fdisk -l work better with RAID controllers [#43485] -* Mon Aug 09 2004 mmj@suse.de +* Mon Aug 09 2004 - mmj@suse.de - Add an improved version of the dmesg bufsize patch. -* Tue Jun 22 2004 mmj@suse.de +* Tue Jun 22 2004 - mmj@suse.de - Add patch to try and guess a filesystem type before blindly assuming it's nfs because of the colon [#42097] -* Mon Jun 14 2004 agruen@suse.de +* Mon Jun 14 2004 - agruen@suse.de - Formatting error in mount.8 manual page. -* Wed Jun 09 2004 mmj@suse.de +* Wed Jun 09 2004 - mmj@suse.de - Add patch from Olaf Kirch to make protocol selection for mount independent of protocol selection for NFS, and picks what is available (preferring TCP over UDP) [#41735] -* Wed Jun 09 2004 mls@suse.de +* Wed Jun 09 2004 - mls@suse.de - add '-f' option to setctsid -* Thu May 27 2004 okir@suse.de +* Thu May 27 2004 - okir@suse.de - sm-notify now binds to a reserved port -* Sat May 15 2004 mmj@suse.de +* Sat May 15 2004 - mmj@suse.de - Add documentation about raw device handling [#39037] -* Mon May 10 2004 mmj@suse.de +* Mon May 10 2004 - mmj@suse.de - Make dmesg dump entire buffer. Patch from Andries/odabrunz [#39761] -* Thu May 06 2004 mmj@suse.de +* Thu May 06 2004 - mmj@suse.de - Also check if the device is the same when doing swapon. Could be the same block device with 2 different names [#39436] -* Wed May 05 2004 mmj@suse.de +* Wed May 05 2004 - mmj@suse.de - Do a /sbin/modprobe raw when invoking raw devices [#39037] -* Tue Apr 20 2004 mmj@suse.de +* Tue Apr 20 2004 - mmj@suse.de - Update to 2.12a including: o fdisk: fix for kernels 2.4.15-2.4.17 o fdisk: fix when all partitions are in use @@ -1131,67 +1081,67 @@ fi o setterm.1: clarification o sfdisk: fix check for is_ide_cdrom_or_tape o umount: skip proc, devfs, devpts on umount -a -* Mon Apr 19 2004 mmj@suse.de +* Mon Apr 19 2004 - mmj@suse.de - Add patch for unlimited raw devices [#39037] -* Thu Apr 15 2004 mmj@suse.de +* Thu Apr 15 2004 - mmj@suse.de - Make sm-notify be more quiet when nothing wrong, and log to sys- log when something is. -* Tue Apr 06 2004 mmj@suse.de +* Tue Apr 06 2004 - mmj@suse.de - Don't use startproc for sm-notify [#38481] -* Mon Apr 05 2004 mmj@suse.de +* Mon Apr 05 2004 - mmj@suse.de - Removing elvtune alltogether was a bit drastic, since it of course works fine with 2.4 kernels. So print a warning in case the BLKELVGET ioctl returns something indicating 2.6 kernels. -* Thu Apr 01 2004 mmj@suse.de +* Thu Apr 01 2004 - mmj@suse.de - Don't package elvtune anymore since it's obsolete now that io scheduler can be tuned in /sys/block/hdX/queue/iosched/* [#37869] -* Wed Mar 31 2004 mmj@suse.de +* Wed Mar 31 2004 - mmj@suse.de - Apply util-linux-2.12a fixes for hwclock and readprofile. The hwclock bit is a timout fix which hopefully fixes [#35877] - Move sm-notify to here from nfs-utils [#36737] -* Mon Mar 29 2004 mmj@suse.de +* Mon Mar 29 2004 - mmj@suse.de - Adjust warnings about Crypto-API -* Sun Mar 28 2004 mmj@suse.de +* Sun Mar 28 2004 - mmj@suse.de - Add patch to make script allways use the same LC_NUMERIC [#35476] -* Fri Mar 26 2004 od@suse.de +* Fri Mar 26 2004 - od@suse.de - Add setctsid by Werner Fink [#37177] -* Fri Mar 26 2004 mmj@suse.de +* Fri Mar 26 2004 - mmj@suse.de - Mount option "code" is now "codepage" so update /etc/fstab in postinstall [#36950] -* Fri Mar 26 2004 mmj@suse.de +* Fri Mar 26 2004 - mmj@suse.de - Remove false statement in nfs.5 about the linux kernel not supporting nfs over tcp [#37060] -* Wed Mar 17 2004 mmj@suse.de +* Wed Mar 17 2004 - mmj@suse.de - Use correct permissions for README.hashalot [#36303] -* Mon Mar 08 2004 mmj@suse.de +* Mon Mar 08 2004 - mmj@suse.de - Enable build of replay [#35434] -* Wed Feb 25 2004 mmj@suse.de +* Wed Feb 25 2004 - mmj@suse.de - Use loop-AES-v2.0f-util-linux-2.12.diff instead of losetup patch added earlier. Thanks Sumit Bose! -* Thu Feb 19 2004 mmj@suse.de +* Thu Feb 19 2004 - mmj@suse.de - Add cryptsetup script from Christophe Saout, for usage with the new dm-crypt. -* Mon Feb 16 2004 mmj@suse.de +* Mon Feb 16 2004 - mmj@suse.de - Add losetup patch and hashalot program from Ben Slusky -* Sun Feb 01 2004 kukuk@suse.de +* Sun Feb 01 2004 - kukuk@suse.de - Remove newgrp again (will use POSIX conform version) -* Fri Jan 16 2004 kukuk@suse.de +* Fri Jan 16 2004 - kukuk@suse.de - Add pam-devel to neededforbuild -* Mon Jan 12 2004 mmj@suse.de +* Mon Jan 12 2004 - mmj@suse.de - Adjust the nfs.5 manual page to reflect we're mounting nfs over tcp pr. default. - Collapse two similar patches 2 one. -* Fri Dec 19 2003 garloff@suse.de +* Fri Dec 19 2003 - garloff@suse.de - Fix by okir for previous patch. -* Fri Dec 19 2003 garloff@suse.de +* Fri Dec 19 2003 - garloff@suse.de - Add patch to fallback to UDP if TCP NFS mount fails. -* Tue Dec 02 2003 mmj@suse.de +* Tue Dec 02 2003 - mmj@suse.de - Make patch to guess if a CD is a CD-Extra [#30316] - Adjust patch that moves ext2/3 in front of vfat - Regenerate patches (filename still tells when they were added) -* Tue Nov 18 2003 mmj@suse.de +* Tue Nov 18 2003 - mmj@suse.de - Mount NFS over TCP pr. default [#33018] -* Thu Nov 13 2003 mmj@suse.de +* Thu Nov 13 2003 - mmj@suse.de - Update to util-linux-2.12 including: o losetup: -p option specifies fd for passphrase o fdisk: sgi layout fix @@ -1222,64 +1172,64 @@ fi o sfdisk.8: added an example of partitioning with logical partitions o sfdisk: only add a AA55 signature for DOS-type partition tables o tailf: new -* Tue Oct 21 2003 mmj@suse.de +* Tue Oct 21 2003 - mmj@suse.de - Correct permissions -* Tue Oct 21 2003 ja@suse.cz +* Tue Oct 21 2003 - ja@suse.cz - added support for cryptoloop in 2.6.x kernels. -* Wed Oct 15 2003 mmj@suse.de +* Wed Oct 15 2003 - mmj@suse.de - Don't build as root -* Mon Oct 13 2003 kukuk@suse.de +* Mon Oct 13 2003 - kukuk@suse.de - Enable newgrp -* Thu Oct 02 2003 kukuk@suse.de +* Thu Oct 02 2003 - kukuk@suse.de - Fix compiling with kernel 2.6.0-test6 header files -* Tue Aug 12 2003 mmj@suse.de +* Tue Aug 12 2003 - mmj@suse.de - Update to pmac-utils-2.1 sources and only include nvsetenv -* Tue Aug 12 2003 mmj@suse.de +* Tue Aug 12 2003 - mmj@suse.de - Add mount_guessfstype support for PCDOS [#27814] -* Wed Jun 18 2003 ak@suse.de +* Wed Jun 18 2003 - ak@suse.de - support noreserved option for NFS (#27428) -* Thu Jun 05 2003 mmj@suse.de +* Thu Jun 05 2003 - mmj@suse.de - Rearrange the specfile wrt. archs -* Tue May 13 2003 mmj@suse.de +* Tue May 13 2003 - mmj@suse.de - Use %%defattr - Remove files we don't package -* Wed May 07 2003 mmj@suse.de +* Wed May 07 2003 - mmj@suse.de - Rearrange the do_guess_fstype() code to look for ext2/3 before vfat [#26581] -* Thu Apr 24 2003 ro@suse.de +* Thu Apr 24 2003 - ro@suse.de - fix install_info --delete call and move from preun to postun -* Mon Apr 14 2003 pthomas@suse.de +* Mon Apr 14 2003 - pthomas@suse.de - Get rid of the syscall for adjtimex in selective cases and just call the glibc wrapper. Fixes build on s390. -* Mon Apr 14 2003 pthomas@suse.de +* Mon Apr 14 2003 - pthomas@suse.de - Use geteuid instead of getuid in hwclock to enable making hwclock suid root. -* Mon Apr 07 2003 mmj@suse.de +* Mon Apr 07 2003 - mmj@suse.de - Only delete info entries when removing last version. -* Thu Mar 13 2003 mmj@suse.de +* Thu Mar 13 2003 - mmj@suse.de - Apply patch to make sfdisk not destroy BSD slices [#25093] -* Mon Mar 03 2003 mmj@suse.de +* Mon Mar 03 2003 - mmj@suse.de - Remove superflous umask(033); calls [#23292] -* Mon Mar 03 2003 ro@suse.de +* Mon Mar 03 2003 - ro@suse.de - add missing info dir entries -* Tue Feb 18 2003 agruen@suse.de +* Tue Feb 18 2003 - agruen@suse.de - Add description of the effect of `mount -t nfs -o noacl' on the use of the GETACL and SETACL remote procedure calls to the nfs(5) manual page. -* Mon Feb 17 2003 mmj@suse.de +* Mon Feb 17 2003 - mmj@suse.de - It's called smbfs not smb [#23697] -* Thu Feb 13 2003 mmj@suse.de +* Thu Feb 13 2003 - mmj@suse.de - Readd patch for passphrase timeout that got lost [#23527] -* Fri Feb 07 2003 mmj@suse.de +* Fri Feb 07 2003 - mmj@suse.de - The install_info macros need PreReq: %%install_info_prereq -* Fri Feb 07 2003 ro@suse.de +* Fri Feb 07 2003 - ro@suse.de - added install_info macros -* Tue Feb 04 2003 ro@suse.de +* Tue Feb 04 2003 - ro@suse.de - don't package /bin/kill (part of coreutils now) -* Tue Feb 04 2003 meissner@suse.de +* Tue Feb 04 2003 - meissner@suse.de - Include tarball with pmac-utils manpages, so we do not need sgmltool and all its dependents. -* Wed Jan 29 2003 mmj@suse.de +* Wed Jan 29 2003 - mmj@suse.de - Update to util-linux-2.11z including: · Translation updates · mount: fix LABEL= handling for user umount, don't abort on read @@ -1287,22 +1237,22 @@ fi · setterm: accept devfs name · simpleinit: security: refuse initctl_fd if FD_CLOEXEC fails · umount: allow user umount after mount by label or uuid -* Wed Jan 22 2003 sf@suse.de +* Wed Jan 22 2003 - sf@suse.de - removed last patch, added new (correct) patch -* Wed Jan 22 2003 sf@suse.de +* Wed Jan 22 2003 - sf@suse.de - removed eliminate_doubles() from mkfs.cramfs.c for x86_64, as it segfaults. (makes the images slightly larger, about 10%%) -* Tue Jan 21 2003 mmj@suse.de +* Tue Jan 21 2003 - mmj@suse.de - Added description of ISO mount options to mount.8 [#22915] -* Mon Dec 02 2002 mmj@suse.de +* Mon Dec 02 2002 - mmj@suse.de - Update the ReiserFS patch from Chris Mason -* Fri Nov 29 2002 mmj@suse.de +* Fri Nov 29 2002 - mmj@suse.de - Fix missing #include -* Thu Nov 28 2002 mmj@suse.de +* Thu Nov 28 2002 - mmj@suse.de - Make readprofile also try to locate the System.map in /boot/System.map-`uname -r` [#22168] -* Wed Nov 27 2002 mmj@suse.de +* Wed Nov 27 2002 - mmj@suse.de - Update to util-linux-2.11y including: o Translation updates o fdisk,cfdisk: cosmetic fixes @@ -1310,7 +1260,7 @@ fi o more: kill external help file o simpleinit: security: refuse initctl_fd if setting FD_CLOEXEC fails (patch we had, now folded upstream) -* Wed Nov 20 2002 mmj@suse.de +* Wed Nov 20 2002 - mmj@suse.de - Update to util-linux-2.11x including: o Translation updates for several languages o cfdisk: correct error printout @@ -1323,56 +1273,56 @@ fi o setpwnam.c: open temp pw file with O_EXCL o simpleinit: fix for "spawn too fast" o swapon: new -e option -* Tue Nov 19 2002 mmj@suse.de +* Tue Nov 19 2002 - mmj@suse.de - Fix multistring assignment in adjtimex -* Mon Nov 11 2002 ro@suse.de +* Mon Nov 11 2002 - ro@suse.de - changed neededforbuild to - changed neededforbuild to <> -* Thu Oct 31 2002 mmj@suse.de +* Thu Oct 31 2002 - mmj@suse.de - Add -b option to mkfs.cramfs (needed for biarch architectures) -* Thu Oct 31 2002 ro@suse.de +* Thu Oct 31 2002 - ro@suse.de - hack time to build on alpha -* Tue Oct 22 2002 mmj@suse.de +* Tue Oct 22 2002 - mmj@suse.de - Add correction to the ReiserFS patch that fixes the case where it was possible but unlikely to detect a logged copy of a super on a dedicated logging device as the real thing. From Chris Mason. -* Tue Oct 22 2002 mmj@suse.de +* Tue Oct 22 2002 - mmj@suse.de - Update to util-linux-2.11w including: o fdisk and cfdisk fixes o more bigendian fix o translation updates o > 2GB swapspace o mount umask, cramfs and ocfs stuff -* Tue Oct 08 2002 mmj@suse.de +* Tue Oct 08 2002 - mmj@suse.de - Only enable below patch on ix86 and x86_64 -* Mon Oct 07 2002 mmj@suse.de +* Mon Oct 07 2002 - mmj@suse.de - Make small bugfix to below patch -* Sat Oct 05 2002 mmj@suse.de +* Sat Oct 05 2002 - mmj@suse.de - Apply patch to enable > 2GB swap (redhat) [#20533] -* Wed Oct 02 2002 mmj@suse.de +* Wed Oct 02 2002 - mmj@suse.de - Add one-liner security fix to mount and umount. -* Mon Sep 23 2002 mmj@suse.de +* Mon Sep 23 2002 - mmj@suse.de - Readd fix for klogconsole that got lost [#19834] -* Fri Sep 13 2002 mmj@suse.de +* Fri Sep 13 2002 - mmj@suse.de - Added patch from Oracle to mount ocfs by label [#19262] -* Thu Sep 12 2002 mmj@suse.de +* Thu Sep 12 2002 - mmj@suse.de - more: Do not cast char * to int and back [#18896] -* Sat Aug 31 2002 olh@suse.de +* Sat Aug 31 2002 - olh@suse.de - add mount_cramfs_be.diff to allow mount -oloop cramfsfile loopdir -* Mon Aug 26 2002 mmj@suse.de +* Mon Aug 26 2002 - mmj@suse.de - Make mode not 666 when writing /etc/mtab [#18342] -* Mon Aug 26 2002 meissner@suse.de +* Mon Aug 26 2002 - meissner@suse.de - quieten klogconsole if the console does not support TIOCLINUX [#12516] -* Thu Aug 22 2002 mmj@suse.de +* Thu Aug 22 2002 - mmj@suse.de - Added patch from Andreas Gruenbacher for nfs-access-acl [#18183] -* Wed Aug 21 2002 mmj@suse.de +* Wed Aug 21 2002 - mmj@suse.de - Fixed an mtab locking bug with patch from Olaf Kirch [#17637] -* Mon Aug 19 2002 mmj@suse.de +* Mon Aug 19 2002 - mmj@suse.de - Updated reiserfs patch from Chris Mason - Added patch for mount.8, thanks Andreas Gruenbacher -* Thu Aug 15 2002 mmj@suse.de +* Thu Aug 15 2002 - mmj@suse.de - Correct PreReq: -* Mon Aug 05 2002 mmj@suse.de +* Mon Aug 05 2002 - mmj@suse.de - Update to 2.11u which includes: o Danish, German, Spanish, Swedish and Turkish updates. o configure: for fsck.cramfs, mkfs.cramfs: add test for libz @@ -1380,22 +1330,22 @@ fi o agetty: use same test as login does to find utmp entry o fdisk: fix for fdisk on empty disk o mount updates -* Tue Jul 23 2002 schwab@suse.de +* Tue Jul 23 2002 - schwab@suse.de - Fix mkfs.cramfs for architectures with non-4k pages. -* Wed Jul 17 2002 mmj@suse.de +* Wed Jul 17 2002 - mmj@suse.de - Merged base into util-linux -* Mon Jul 15 2002 mmj@suse.de +* Mon Jul 15 2002 - mmj@suse.de - Added JFSv2 patch from Christoph Hellwig for volume label. Does for JFS, what below patch does for ReiserFS. -* Sun Jul 14 2002 adrian@suse.de +* Sun Jul 14 2002 - adrian@suse.de - fix ul-2.10m-sgi-fdisk.diff patch to apply again -* Thu Jul 11 2002 mmj@suse.de +* Thu Jul 11 2002 - mmj@suse.de - Added patch from Chris Mason for volume label on reiserfs -* Wed Jul 10 2002 olh@suse.de +* Wed Jul 10 2002 - olh@suse.de - add mkfs.cramfs and fsck.cramfs to file list -* Wed Jul 10 2002 mmj@suse.de +* Wed Jul 10 2002 - mmj@suse.de - Fixed nfs.5 to tell nfsver defaults to 3 [#16815] -* Mon Jul 08 2002 mmj@suse.de +* Mon Jul 08 2002 - mmj@suse.de - Update to 2.11t which includes * fdformat: remove test on major * fdisk, hwclock and swap polishing @@ -1403,340 +1353,340 @@ fi * cramfs tools includes from the kernel * swap{on,off} honours /proc/swaps * mount small fixups -* Fri Jul 05 2002 kukuk@suse.de +* Fri Jul 05 2002 - kukuk@suse.de - Use %%ix86 macro -* Mon Jul 01 2002 bk@suse.de +* Mon Jul 01 2002 - bk@suse.de - get raw built on s390 and s390x - remove %%ifarchs s390 s390x for fdisk(needed for SCSI disks) -* Mon Jun 17 2002 mmj@suse.de +* Mon Jun 17 2002 - mmj@suse.de - Added a fix for simpleinit exploit. -* Thu Jun 13 2002 olh@suse.de +* Thu Jun 13 2002 - olh@suse.de - disable hwclock ppc patch, maybe obsolete with recent kernels -* Thu May 16 2002 mmj@suse.de +* Thu May 16 2002 - mmj@suse.de - Added manpage guessfstype(8) -* Thu May 09 2002 mmj@suse.de +* Thu May 09 2002 - mmj@suse.de - Updated to util-linux-2.11r, including translations, x86-64 sup- port and small bugfixes. -* Sat Apr 13 2002 mmj@suse.de +* Sat Apr 13 2002 - mmj@suse.de - Updated to util-linux-2.11q, includes bugfixes. - util-linux-mkswap.patch for ia64 was folded into mainline -* Fri Apr 12 2002 stepan@suse.de +* Fri Apr 12 2002 - stepan@suse.de - added x86-64 support. -* Thu Apr 04 2002 ihno@suse.de +* Thu Apr 04 2002 - ihno@suse.de - corrected printf to report shared memories sizes bigger than 2 GByte correct (Bug #15585). It was reportet on s390x, but should effect other 64-Bit systems as well. -* Tue Mar 19 2002 mmj@suse.de +* Tue Mar 19 2002 - mmj@suse.de - Updated to 2.11o. The hexdump patch have been dropped since it was folded to mainline util-linux. -* Fri Mar 15 2002 schwab@suse.de +* Fri Mar 15 2002 - schwab@suse.de - Fix mkswap for ia64. -* Mon Mar 04 2002 draht@suse.de +* Mon Mar 04 2002 - draht@suse.de - permissions fixes for write(1) and wall(1) -* Fri Feb 01 2002 mmj@suse.de +* Fri Feb 01 2002 - mmj@suse.de - Moved /usr/bin/logger to /bin/logger (needed by sysconfig) -* Mon Jan 28 2002 mmj@suse.de +* Mon Jan 28 2002 - mmj@suse.de - Added the guessfstype binary from msvec/fehr -* Thu Jan 24 2002 ro@suse.de +* Thu Jan 24 2002 - ro@suse.de - modified fillup_and_insserv call (perl-hack not needed here) -* Mon Jan 21 2002 mmj@suse.de +* Mon Jan 21 2002 - mmj@suse.de - Merge NetBSD hexdump changes, fixes bugzilla #12801 -* Thu Jan 10 2002 ro@suse.de +* Thu Jan 10 2002 - ro@suse.de - removed ACTIVATE_RAW_DEV -* Mon Dec 31 2001 adrian@suse.de +* Mon Dec 31 2001 - adrian@suse.de - add patch for mips to create SGI partition tables with fdisk -* Tue Dec 18 2001 bjacke@suse.de +* Tue Dec 18 2001 - bjacke@suse.de - add adjtimex -* Mon Dec 10 2001 mmj@suse.de +* Mon Dec 10 2001 - mmj@suse.de - Update to util-linux-2.11n -* Tue Nov 20 2001 mmj@suse.de +* Tue Nov 20 2001 - mmj@suse.de - Added a patch to 'wall' to remove unwanted newline (#12181) -* Wed Nov 07 2001 kukuk@suse.de +* Wed Nov 07 2001 - kukuk@suse.de - Remove unneeded SPARC patch for hwclock -* Sat Oct 13 2001 kukuk@suse.de +* Sat Oct 13 2001 - kukuk@suse.de - Update to util-linux 2.11l -* Wed Sep 12 2001 garloff@suse.de +* Wed Sep 12 2001 - garloff@suse.de - Fixed some dutch translations. (bug #10276) -* Mon Sep 10 2001 olh@suse.de +* Mon Sep 10 2001 - olh@suse.de - marry fdisk and AIX label again... add lsprop for ppc dumps the device tree in a human readable format -* Mon Sep 03 2001 kukuk@suse.de +* Mon Sep 03 2001 - kukuk@suse.de - Update to version 2.11i: - blockdev: corrected ioctl numbers - cal: fixed for multibyte locales - line: new - mount: added vxfs magic -* Sat Sep 01 2001 kukuk@suse.de +* Sat Sep 01 2001 - kukuk@suse.de - Let mount follow symlinks again -* Wed Aug 29 2001 kukuk@suse.de +* Wed Aug 29 2001 - kukuk@suse.de - Add new option to losetup manual page -* Tue Aug 28 2001 draht@suse.de +* Tue Aug 28 2001 - draht@suse.de - added timeout support for losetup (-t ) -* Mon Aug 27 2001 kukuk@suse.de +* Mon Aug 27 2001 - kukuk@suse.de - Add raw rc scripts, too -* Sun Aug 26 2001 bjacke@suse.de +* Sun Aug 26 2001 - bjacke@suse.de - added raw binary and put rawio into obsoletes and provides -* Sat Aug 25 2001 kukuk@suse.de +* Sat Aug 25 2001 - kukuk@suse.de - Fix path in getopt.1 manual page to example directory [Bug #9831] -* Fri Aug 24 2001 kukuk@suse.de +* Fri Aug 24 2001 - kukuk@suse.de - Small fix for hwclock on newer SPARCs -* Mon Aug 13 2001 ro@suse.de +* Mon Aug 13 2001 - ro@suse.de - changed neededforbuild to -* Mon Jul 30 2001 kukuk@suse.de +* Mon Jul 30 2001 - kukuk@suse.de - Update to util-linux-2.11h - Add nologin program -* Tue Jul 10 2001 kukuk@suse.de +* Tue Jul 10 2001 - kukuk@suse.de - Remove swapdev from filelist -* Tue Jul 10 2001 kukuk@suse.de +* Tue Jul 10 2001 - kukuk@suse.de - Update to util-linux-2.11g -* Thu Jun 07 2001 bk@suse.de +* Wed Jun 06 2001 - bk@suse.de - added s390x to all ifnarch s390 -* Fri Apr 20 2001 kukuk@suse.de +* Fri Apr 20 2001 - kukuk@suse.de - Fix wall bug (character 80, 160, 240, are missing) [Bug #6962] -* Mon Mar 26 2001 kukuk@suse.de +* Mon Mar 26 2001 - kukuk@suse.de - Add exception for broken i2o disk device numbering scheme, kernel hacker are not able to fix this and make it right [Bug #5881]. -* Sat Mar 24 2001 kukuk@suse.de +* Sat Mar 24 2001 - kukuk@suse.de - Update to util-linux 2.11b -* Thu Mar 15 2001 kukuk@suse.de +* Thu Mar 15 2001 - kukuk@suse.de - Fix changing of partitions with ID 0 on SPARC - Remove duplicate mount patch -* Wed Mar 14 2001 schwab@suse.de +* Wed Mar 14 2001 - schwab@suse.de - Don't use _syscallX on ia64. - Fix missing includes. -* Wed Mar 14 2001 kukuk@suse.de +* Wed Mar 14 2001 - kukuk@suse.de - Update to version 2.11a -* Fri Mar 02 2001 kukuk@suse.de +* Fri Mar 02 2001 - kukuk@suse.de - enable write again -* Mon Feb 12 2001 kukuk@suse.de +* Mon Feb 12 2001 - kukuk@suse.de - cmos.c: Use sys/io.h, fix PowerPC hack -* Tue Feb 06 2001 ro@suse.de +* Tue Feb 06 2001 - ro@suse.de - wall.c: include time.h -* Mon Feb 05 2001 kukuk@suse.de +* Mon Feb 05 2001 - kukuk@suse.de - Split hex to extra package - Update to util-linux-2.10s -* Fri Feb 02 2001 werner@suse.de +* Fri Feb 02 2001 - werner@suse.de - Make swapon/swapoff more handy: * Ignore swap files on ro mounted file systems * If -a is given ignore already active devices at swapon * If -a is given ignore not active devices at swapoff -* Thu Jan 25 2001 ro@suse.de +* Thu Jan 25 2001 - ro@suse.de - added Provides: util -* Fri Jan 12 2001 garloff@suse.de +* Fri Jan 12 2001 - garloff@suse.de - Apply patch to lomount to allow all kerneli crypt algos to be passed and allow to pass passwd with -k. - losetup seems to support >2GB files just fine (#5433) -* Tue Jan 02 2001 kukuk@suse.de +* Tue Jan 02 2001 - kukuk@suse.de - Save permissions of /etc/mtab [Bug #5027] -* Tue Dec 05 2000 kukuk@suse.de +* Tue Dec 05 2000 - kukuk@suse.de - Search first in /etc/filesystems, then in /proc/filesystems -* Tue Dec 05 2000 kukuk@suse.de +* Tue Dec 05 2000 - kukuk@suse.de - Use AIX/fdisk patch from util-linux-2.10r - Backport "guess filesystems" from util-linux-2.10r -* Tue Dec 05 2000 schwab@suse.de +* Tue Dec 05 2000 - schwab@suse.de - Don't use _syscallX on ia64. -* Mon Dec 04 2000 olh@suse.de +* Mon Dec 04 2000 - olh@suse.de - fix diff again -* Sun Dec 03 2000 olh@suse.de +* Sun Dec 03 2000 - olh@suse.de - no segfaults with AIX disklabels -* Wed Nov 29 2000 uli@suse.de +* Wed Nov 29 2000 - uli@suse.de - fixed to build on PPC -* Mon Nov 27 2000 schwab@suse.de +* Mon Nov 27 2000 - schwab@suse.de - Fix broken casts in hwclock. -* Thu Nov 23 2000 bk@suse.de +* Thu Nov 23 2000 - bk@suse.de - temporary disable pivot_root on s390(2.4 kernel is not yet built) -* Wed Nov 22 2000 schwab@suse.de +* Wed Nov 22 2000 - schwab@suse.de - Add pivot_root to file list. -* Mon Nov 20 2000 kukuk@suse.de +* Mon Nov 20 2000 - kukuk@suse.de - Fix pmac-utils to compile with new kernel -* Fri Nov 17 2000 kukuk@suse.de +* Fri Nov 17 2000 - kukuk@suse.de - Fix hwclock to compile on PPC -* Wed Nov 15 2000 kukuk@suse.de +* Wed Nov 15 2000 - kukuk@suse.de - Update util-linux to 2.10q, merge flushb.diff -* Thu Nov 02 2000 kukuk@suse.de +* Thu Nov 02 2000 - kukuk@suse.de - Remove some of the last specfile changes -* Wed Nov 01 2000 olh@suse.de +* Wed Nov 01 2000 - olh@suse.de - update pmac-utils for new powermacs, cleanup specfile -* Fri Oct 20 2000 kukuk@suse.de +* Fri Oct 20 2000 - kukuk@suse.de - Update util-linux to 2.10p - Rename package from util to util-linux -* Wed Sep 27 2000 kukuk@suse.de +* Wed Sep 27 2000 - kukuk@suse.de - Allow NFS v3 with 2.2.17.SuSE -* Tue Sep 26 2000 kukuk@suse.de +* Tue Sep 26 2000 - kukuk@suse.de - Fix mount for new NFS kernel patch -* Sat Sep 09 2000 kukuk@suse.de +* Sat Sep 09 2000 - kukuk@suse.de - Remove tcsh dependency - Update to util-linux 2.10o, use of /etc/filesystems is still broken -* Fri Aug 25 2000 pthomas@suse.de +* Fri Aug 25 2000 - pthomas@suse.de - use %%{_mandir} and %%{_infodir} exclusively. This allows building from source rpm on platforms other than 7.0. -* Wed Jul 19 2000 bk@suse.de +* Wed Jul 19 2000 - bk@suse.de - s390: removed dasdfmt and silo, %%ifnarch s390 for some non-s390 things. -* Tue May 30 2000 bk@suse.de +* Tue May 30 2000 - bk@suse.de - added dasdfmt and silo on s390 -* Mon May 15 2000 kukuk@suse.de +* Mon May 15 2000 - kukuk@suse.de - util-linux: Update to 2.10m -* Wed Apr 26 2000 kukuk@suse.de +* Wed Apr 26 2000 - kukuk@suse.de - flusb: Don't use kernel headers, even if we don't need them! -* Wed Apr 19 2000 kukuk@suse.de +* Wed Apr 19 2000 - kukuk@suse.de - util-linux: Update to 2.10l -* Mon Apr 17 2000 kukuk@suse.de +* Mon Apr 17 2000 - kukuk@suse.de - util-linux: Update to 2.10k -* Thu Apr 13 2000 kukuk@suse.de +* Thu Apr 13 2000 - kukuk@suse.de - Move /sbin/setserial to /bin/setserial, add compat link to /sbin. This fixes [Bug 1084] and is necessary for FHS 2.1 -* Wed Apr 12 2000 kukuk@suse.de +* Wed Apr 12 2000 - kukuk@suse.de - Fix util-linux for Alpha -* Wed Apr 12 2000 kukuk@suse.de +* Wed Apr 12 2000 - kukuk@suse.de - util-linux: Update to 2.10j -* Sun Apr 02 2000 bk@suse.de +* Sun Apr 02 2000 - bk@suse.de - suse s390 team added support for s390 -* Thu Mar 30 2000 uli@suse.de +* Thu Mar 30 2000 - uli@suse.de - hwclock/PPC: added support for MK48T559 RTC chip used in MTX+ boards -* Fri Mar 24 2000 kukuk@suse.de +* Fri Mar 24 2000 - kukuk@suse.de - Add Linux LVM partition tag to fdisk - Fix a lot of more possible buffer overruns - Fix some fdisk sunlabel bugs - added BuildRoot fixes from nadvorni@suse.cz -* Wed Mar 22 2000 kukuk@suse.de +* Wed Mar 22 2000 - kukuk@suse.de - Update util-linux to 2.10h - Add clock again for non PPC platforms -* Fri Mar 17 2000 uli@suse.de +* Fri Mar 17 2000 - uli@suse.de - now contains both hwclock and clock on PPC (/sbin/init.d/boot chooses what to run at runtime) -* Tue Mar 14 2000 schwab@suse.de +* Tue Mar 14 2000 - schwab@suse.de - Add support for ia64. -* Thu Mar 09 2000 kukuk@suse.de +* Thu Mar 09 2000 - kukuk@suse.de - fdisk: Fix -l for Mylex RAID controller -* Tue Mar 07 2000 kukuk@suse.de +* Tue Mar 07 2000 - kukuk@suse.de - etc/filesystems: Add minix and reiserfs -* Tue Mar 07 2000 kukuk@suse.de +* Tue Mar 07 2000 - kukuk@suse.de - mount: fix endian problem with minix fs -* Tue Feb 15 2000 kukuk@suse.de +* Tue Feb 15 2000 - kukuk@suse.de - mount: Add hack for PPC/syscall mount problem -* Sun Feb 13 2000 bk@suse.de +* Sun Feb 13 2000 - bk@suse.de - let rdev continue in case it stubles over a bad file in /dev (/dev/snd fix) -* Fri Feb 04 2000 kukuk@suse.de +* Fri Feb 04 2000 - kukuk@suse.de - Make PPC clock parameter compatible to hwclock -* Thu Feb 03 2000 kukuk@suse.de +* Thu Feb 03 2000 - kukuk@suse.de - Fix filelist for SPARC -* Thu Feb 03 2000 kukuk@suse.de +* Thu Feb 03 2000 - kukuk@suse.de - util-linux: Update to 2.10f (mount security fix) -* Sun Jan 23 2000 kukuk@suse.de +* Sun Jan 23 2000 - kukuk@suse.de - util-linux: Update to 2.10e -* Tue Jan 18 2000 kukuk@suse.de +* Tue Jan 18 2000 - kukuk@suse.de - mount now looks at first in /etc/filesystems and then in /proc/filesystems -* Tue Jan 18 2000 ro@suse.de +* Tue Jan 18 2000 - ro@suse.de - fixed pmac-utils to build with 2.3 as well -* Tue Jan 18 2000 kukuk@suse.de +* Tue Jan 18 2000 - kukuk@suse.de - Fix a lot of fdisk buffer overruns [Bug 1642] -* Mon Jan 17 2000 kukuk@suse.de +* Mon Jan 17 2000 - kukuk@suse.de - Fix setserial for Linux 2.3.40 - Remove write, is now in nkitb - Build minix and bfs tools for SPARC - Fix some buffer overflows in fdisk -* Fri Dec 17 1999 kukuk@suse.de +* Fri Dec 17 1999 - kukuk@suse.de - util-linux: Update to 2.10d - hex: Update to 1.2 - Move manual pages to /usr/share/man -* Tue Nov 30 1999 uli@suse.de +* Tue Nov 30 1999 - uli@suse.de - re-added hwclock link for PPC (2nd try) -* Tue Nov 30 1999 uli@suse.de +* Tue Nov 30 1999 - uli@suse.de - re-added hwclock link for PPC -* Mon Nov 15 1999 kukuk@suse.de +* Mon Nov 15 1999 - kukuk@suse.de - util-linux: Update to 2.10b -* Sat Nov 13 1999 kukuk@suse.de +* Sat Nov 13 1999 - kukuk@suse.de - setserial: Add Patch for Sparc - Fix filelist for Sparc -* Wed Oct 27 1999 garloff@suse.de +* Wed Oct 27 1999 - garloff@suse.de - added flushb (moved here from ddrescue). - fix bug in logger (remove trailing newlines). -* Fri Oct 22 1999 kukuk@suse.de +* Fri Oct 22 1999 - kukuk@suse.de - util-linux: Remove old patches for mk_loop_h -* Sat Oct 16 1999 kukuk@suse.de +* Sat Oct 16 1999 - kukuk@suse.de - util-linux: Update to 2.9z -* Fri Oct 08 1999 kukuk@suse.de +* Fri Oct 08 1999 - kukuk@suse.de - Update to util-linux-2.9y (execpt fdisk) -* Tue Sep 14 1999 uli@suse.de +* Tue Sep 14 1999 - uli@suse.de - added PMac-specific utils for PPC -* Mon Sep 13 1999 bs@suse.de +* Mon Sep 13 1999 - bs@suse.de - ran old prepare_spec on spec file to switch to new prepare_spec. -* Thu Aug 26 1999 uli@suse.de +* Thu Aug 26 1999 - uli@suse.de - disabled hayesesp for PPC -* Wed Aug 25 1999 kukuk@suse.de +* Wed Aug 25 1999 - kukuk@suse.de - Donīt install tsort, its now in textutils 2.0 -* Tue Aug 24 1999 kukuk@suse.de +* Tue Aug 24 1999 - kukuk@suse.de - Update to util-linux-2.9w (execpt fdisk) -* Mon Aug 09 1999 kukuk@suse.de +* Mon Aug 09 1999 - kukuk@suse.de - Update to util-linux-2.9v (execpt fdisk) -* Tue Jul 20 1999 garloff@suse.de +* Tue Jul 20 1999 - garloff@suse.de - Added hex from Erich S. Raymond -* Mon Jul 12 1999 kukuk@suse.de +* Mon Jul 12 1999 - kukuk@suse.de - Add fdisk patch from Klaus G. Wagner - Add mount patch from util-linux 2.9u -* Tue Jul 06 1999 kukuk@suse.de +* Tue Jul 06 1999 - kukuk@suse.de - update to util-linux-2.9t -* Fri Jun 25 1999 kukuk@suse.de +* Fri Jun 25 1999 - kukuk@suse.de - update to util-linux-2.9s -* Wed Mar 03 1999 ro@suse.de +* Wed Mar 03 1999 - ro@suse.de - hwclock.c: always use busywait to get rtctime (it's hard to find out at runtime if we will get an irq) -* Tue Mar 02 1999 ro@suse.de +* Tue Mar 02 1999 - ro@suse.de - update to util-linux-2.9i - update to setserial-2.15 - using diffs from jurix and add-ons from kgw for compaq smart raid -* Mon Feb 01 1999 ro@suse.de +* Mon Feb 01 1999 - ro@suse.de - rdev is not built on alpha -* Mon Jan 18 1999 florian@suse.de +* Mon Jan 18 1999 - florian@suse.de - fixed one broken case to delete a partition in fdisk -* Sun Dec 13 1998 bs@suse.de +* Sun Dec 13 1998 - bs@suse.de - fixed file list -* Thu Dec 10 1998 fehr@suse.de +* Thu Dec 10 1998 - fehr@suse.de - fix bug in fdisk -* Tue Dec 08 1998 ro@suse.de +* Tue Dec 08 1998 - ro@suse.de - removed last from filelist - added link /sbin/clock -> hwclock -* Wed Nov 04 1998 ro@suse.de +* Wed Nov 04 1998 - ro@suse.de - fdisksunlabel: don't include scsi/scsi.h for glibc-2.0 -* Fri Oct 30 1998 ro@suse.de +* Fri Oct 30 1998 - ro@suse.de - update to 2.9 / added hostid from previous diff - copied some glibc changes from previous diff (strcpy..) -* Thu Sep 17 1998 ro@suse.de +* Thu Sep 17 1998 - ro@suse.de - define _GNU_SOURCE when using getopt -* Mon Aug 31 1998 ro@suse.de +* Mon Aug 31 1998 - ro@suse.de - full switch to util-linux 2.8 -- sync has moved to pkg fileutils -- chroot has moved to pkg sh_utils (has been there for a while) -- adopted hostid from previous suse-pkg -* Mon Aug 24 1998 ro@suse.de +* Mon Aug 24 1998 - ro@suse.de - switched to use mount from util-linux-2.8 -* Tue Jun 23 1998 ro@suse.de +* Tue Jun 23 1998 - ro@suse.de - added fdisk, sfdisk, cfdisk from util-linux-2.8 (including man-pages,readmes) -* Mon Nov 17 1997 ro@suse.de +* Mon Nov 17 1997 - ro@suse.de - changed /local/bin/perl5 in chkdupexe to /usr/bin/perl -* Fri Oct 31 1997 ro@suse.de +* Fri Oct 31 1997 - ro@suse.de - temporarily removed mount-hacker -* Thu Oct 30 1997 florian@suse.de +* Wed Oct 29 1997 - florian@suse.de - add changes from ms@suse.de for hostid.c -* Tue May 20 1997 florian@suse.de +* Tue May 20 1997 - florian@suse.de - only support kernel 2.0.x for nfs mounts, please use /bin/mount-hacker for kernel 2.1.x -* Wed Apr 30 1997 florian@suse.de +* Wed Apr 30 1997 - florian@suse.de - update to mount 2.6g -* Mon Apr 14 1997 florian@suse.de +* Sun Apr 13 1997 - florian@suse.de - update to new version util-linux 2.6 - update to new version mount 2.6e -* Thu Jan 02 1997 florian@suse.de +* Thu Jan 02 1997 - florian@suse.de - update to mount 2.5p -* Thu Jan 02 1997 florian@suse.de +* Thu Jan 02 1997 - florian@suse.de - Update auf neue Version von mount 2.5o. -* Thu Jan 02 1997 florian@suse.de +* Thu Jan 02 1997 - florian@suse.de - updated to new version mount 2.5m - (u)mount now gives much better error messages -* Thu Jan 02 1997 bs@suse.de +* Thu Jan 02 1997 - bs@suse.de compile setterm with libtermcap and not libncurses use newer mount instead of the old version in util-linux (security fix)