diff options
author | Koen Kooi <koen@openembedded.org> | 2005-06-30 08:19:37 +0000 |
---|---|---|
committer | OpenEmbedded Project <openembedded-devel@lists.openembedded.org> | 2005-06-30 08:19:37 +0000 |
commit | c8e5702127e507e82e6f68a4b8c546803accea9d (patch) | |
tree | 00583491f40ecc640f2b28452af995e3a63a09d7 /packages/tinylogin | |
parent | 87ec8ca4d2e2eb4d1c1e1e1a6b46a395d56805b9 (diff) |
import clean BK tree at cset 1.3670
Diffstat (limited to 'packages/tinylogin')
-rw-r--r-- | packages/tinylogin/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/tinylogin/tinylogin-1.4/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/tinylogin/tinylogin-1.4/add-system.patch | 115 | ||||
-rw-r--r-- | packages/tinylogin/tinylogin-1.4/adduser-empty_pwd.patch | 43 | ||||
-rw-r--r-- | packages/tinylogin/tinylogin-1.4/cvs-20040608.patch | 821 |
5 files changed, 979 insertions, 0 deletions
diff --git a/packages/tinylogin/.mtn2git_empty b/packages/tinylogin/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/tinylogin/.mtn2git_empty diff --git a/packages/tinylogin/tinylogin-1.4/.mtn2git_empty b/packages/tinylogin/tinylogin-1.4/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/tinylogin/tinylogin-1.4/.mtn2git_empty diff --git a/packages/tinylogin/tinylogin-1.4/add-system.patch b/packages/tinylogin/tinylogin-1.4/add-system.patch index e69de29bb2..18b4e47ad7 100644 --- a/packages/tinylogin/tinylogin-1.4/add-system.patch +++ b/packages/tinylogin/tinylogin-1.4/add-system.patch @@ -0,0 +1,115 @@ +? add-system.patch +? cvs-20040608.patch +? familiar +? pod2htmd.tmp +? pod2htmi.tmp +? system.diff +? tinylogin_1.4-20030620.1_arm.ipk +? tinylogin_1.4-20030620.1_arm.ipk.asc +? tinylogin_1.4-20030620.1_arm.ipk.upload.html +? tinylogin_1.4-20030620.2_arm.ipk +? tinylogin_1.4-20030620.2_arm.ipk.asc +? tinylogin_1.4-20030620.2_arm.ipk.upload.html +? tinylogin_1.4-20030620_arm.ipk +? tinylogin_1.4-20030620_arm.ipk.asc +? tinylogin_1.4-20030620_arm.ipk.upload.html +? tmp +Index: addgroup.c +=================================================================== +RCS file: /var/cvs/tinylogin/addgroup.c,v +retrieving revision 1.23 +diff -u -r1.23 addgroup.c +--- a/addgroup.c 9 Jan 2003 18:43:29 -0000 1.23 ++++ b/addgroup.c 8 Jun 2004 08:56:08 -0000 +@@ -31,6 +31,7 @@ + #include <sys/stat.h> + #include <sys/types.h> + #include <unistd.h> ++#include <getopt.h> + #include "tinylogin.h" + + #define GROUP_FILE "/etc/group" +@@ -124,6 +125,11 @@ + return 0; + } + ++static struct option long_options[] = { ++ { "system", 0, NULL, 'S' }, ++ { 0, 0, 0, 0 } ++}; ++ + /* + * addgroup will take a login_name as its first parameter. + * +@@ -136,14 +142,19 @@ + int opt; + char *group; + char *user; ++ int option_index = -1; + gid_t gid = 0; ++ int system = 0; + + /* get remaining args */ +- while ((opt = getopt (argc, argv, "g:")) != -1) { ++ while ((opt = getopt_long (argc, argv, "g:S", long_options, &option_index)) != -1) { + switch (opt) { + case 'g': + gid = strtol(optarg, NULL, 10); + break; ++ case 'S': ++ system = 1; ++ break; + default: + show_usage(); + break; +Index: adduser.c +=================================================================== +RCS file: /var/cvs/tinylogin/adduser.c,v +retrieving revision 1.38 +diff -u -r1.38 adduser.c +--- a/adduser.c 21 Jun 2003 19:35:42 -0000 1.38 ++++ b/adduser.c 8 Jun 2004 08:56:09 -0000 +@@ -66,13 +66,13 @@ + + /* remix */ + /* EDR recoded such that the uid may be passed in *p */ +-static int passwd_study(const char *filename, struct passwd *p) ++static int passwd_study(const char *filename, struct passwd *p, int system) + { + struct passwd *pw; + FILE *passwd; + +- const int min = 500; +- const int max = 65000; ++ const int min = system ? 10 : 500; ++ const int max = system ? 99 : 65000; + + passwd = wfopen(filename, "r"); + if (!passwd) +@@ -142,7 +142,7 @@ + } + + /* putpwent(3) remix */ +-static int adduser(const char *filename, struct passwd *p, int makehome, int setpass) ++static int adduser(const char *filename, struct passwd *p, int makehome, int setpass, int system) + { + FILE *passwd; + int r; +@@ -165,7 +165,7 @@ + fseek(passwd, 0, SEEK_END); + + /* if (passwd_study(filename, p) == 0) { */ +- r = passwd_study(filename, p); ++ r = passwd_study(filename, p, system); + if (r) { + if (r == 1) + error_msg("%s: login already in use", p->pw_name); +@@ -357,7 +357,7 @@ + } + + /* grand finale */ +- return adduser(PASSWD_FILE, &pw, makehome, setpass); ++ return adduser(PASSWD_FILE, &pw, makehome, setpass, system); + } + + /* $Id: adduser.c,v 1.38 2003/06/21 19:35:42 andersen Exp $ */ diff --git a/packages/tinylogin/tinylogin-1.4/adduser-empty_pwd.patch b/packages/tinylogin/tinylogin-1.4/adduser-empty_pwd.patch index e69de29bb2..737ac423c4 100644 --- a/packages/tinylogin/tinylogin-1.4/adduser-empty_pwd.patch +++ b/packages/tinylogin/tinylogin-1.4/adduser-empty_pwd.patch @@ -0,0 +1,43 @@ +--- tinylogin-1.4/adduser.c.orig 2004-09-30 18:01:46.000000000 +0200 ++++ tinylogin-1.4/adduser.c 2004-09-30 18:07:01.000000000 +0200 +@@ -249,6 +249,7 @@ + struct option long_options[] = { + { "home", 1, NULL, 'h' }, + { "disabled-password", 0, NULL, 'D' }, ++ { "empty-password", 0, NULL, 'E' }, + { "system", 0, NULL, 'S' }, + { "ingroup", 1, NULL, 'G' }, + { "no-create-home", 0, NULL, 'H' }, +@@ -287,7 +288,7 @@ + shell = default_shell; + + /* get args */ +- while ((opt = getopt_long (argc, argv, "h:g:s:G:DSH", long_options, &option_index)) != -1) { ++ while ((opt = getopt_long (argc, argv, "h:g:s:G:DESH", long_options, &option_index)) != -1) { + switch (opt) { + case 'h': + home = optarg; +@@ -304,6 +305,9 @@ + case 'D': + setpass = 0; + break; ++ case 'E': ++ setpass = -1; ++ break; + case 'S': + system = 1; + break; +@@ -338,7 +342,12 @@ + + /* create a passwd struct */ + pw.pw_name = (char *)login; +- pw.pw_passwd = (char *)default_passwd; ++ if (setpass != -1) ++ pw.pw_passwd = (char *)default_passwd; ++ else { ++ pw.pw_passwd = (char *)""; ++ setpass = 0; ++ } + pw.pw_uid = 0; + pw.pw_gid = 0; + pw.pw_gecos = (char *)gecos; diff --git a/packages/tinylogin/tinylogin-1.4/cvs-20040608.patch b/packages/tinylogin/tinylogin-1.4/cvs-20040608.patch index e69de29bb2..1142329a67 100644 --- a/packages/tinylogin/tinylogin-1.4/cvs-20040608.patch +++ b/packages/tinylogin/tinylogin-1.4/cvs-20040608.patch @@ -0,0 +1,821 @@ +Index: Config.h +=================================================================== +RCS file: /var/cvs/tinylogin/Config.h,v +retrieving revision 1.10 +retrieving revision 1.12 +diff -u -r1.10 -r1.12 +--- a/Config.h 23 Jun 2002 03:09:07 -0000 1.10 ++++ b/Config.h 17 Feb 2003 11:51:55 -0000 1.12 +@@ -27,15 +27,11 @@ + // Enable checking of /etc/securetty by login + #define CONFIG_FEATURE_SECURETTY + // +-// Enable using sha passwords +-#define CONFIG_FEATURE_SHA1_PASSWORDS +-// + // Enable use of a wheel group + #define CONFIG_WHEEL_GROUP + // +-// This compiles out everything but the most +-// trivial --help usage information (i.e. reduces binary size) +-#define CONFIG_FEATURE_TRIVIAL_HELP ++// Show verbose usage messages ++//#define CONFIG_FEATURE_VERBOSE_USAGE + // + // Enable 'tinylogin --install [-s]' to allow tinylogin + // to create links (or symlinks) at runtime for all the +@@ -48,10 +44,6 @@ + // Nothing beyond this point should ever be touched by + // mere mortals so leave this stuff alone. + // +-#ifdef CONFIG_FEATURE_SHA1_PASSWORDS +-#define CONFIG_SHA1 +-#endif +-// + #ifdef CONFIG_FEATURE_SHADOWPASSWDS + #define CONFIG_SHADOW + #endif +Index: addgroup.c +=================================================================== +RCS file: /var/cvs/tinylogin/addgroup.c,v +retrieving revision 1.22 +retrieving revision 1.23 +diff -u -r1.22 -r1.23 +--- a/addgroup.c 12 Dec 2002 08:46:03 -0000 1.22 ++++ b/addgroup.c 9 Jan 2003 18:43:29 -0000 1.23 +@@ -133,23 +133,33 @@ + * ________________________________________________________________________ */ + int addgroup_main(int argc, char **argv) + { ++ int opt; + char *group; + char *user; + gid_t gid = 0; + +- if (argc < 2) { +- show_usage(); ++ /* get remaining args */ ++ while ((opt = getopt (argc, argv, "g:")) != -1) { ++ switch (opt) { ++ case 'g': ++ gid = strtol(optarg, NULL, 10); ++ break; ++ default: ++ show_usage(); ++ break; ++ } + } + +- if (strncmp(argv[1], "-g", 2) == 0) { +- gid = strtol(argv[2], NULL, 10); +- group = argv[2]; ++ if (optind < argc) { ++ group = argv[optind]; ++ optind++; + } else { + show_usage(); + } +- +- if (argc == 4) { +- user = argv[3]; ++ ++ if (optind < argc) { ++ user = argv[optind]; ++ optind++; + } else { + user = ""; + } +@@ -163,4 +173,4 @@ + return addgroup(GROUP_FILE, group, gid, user); + } + +-/* $Id: addgroup.c,v 1.22 2002/12/12 08:46:03 andersen Exp $ */ ++/* $Id: addgroup.c,v 1.23 2003/01/09 18:43:29 andersen Exp $ */ +Index: adduser.c +=================================================================== +RCS file: /var/cvs/tinylogin/adduser.c,v +retrieving revision 1.37 +retrieving revision 1.38 +diff -u -r1.37 -r1.38 +--- a/adduser.c 12 Dec 2002 08:46:03 -0000 1.37 ++++ b/adduser.c 21 Jun 2003 19:35:42 -0000 1.38 +@@ -21,6 +21,9 @@ + * + */ + ++#ifndef _GNU_SOURCE ++#define _GNU_SOURCE ++#endif + #include <errno.h> + #include <fcntl.h> + #include <stdarg.h> +@@ -29,6 +32,7 @@ + #include <string.h> + #include <time.h> + #include <unistd.h> ++#include <getopt.h> + #include <sys/param.h> + #include <sys/stat.h> + #include <sys/types.h> +@@ -93,21 +97,23 @@ + } + } + +- /* EDR check for an already existing gid */ +- while (getgrgid(p->pw_uid) != NULL) +- p->pw_uid++; +- +- /* EDR also check for an existing group definition */ +- if (getgrnam(p->pw_name) != NULL) +- return 3; ++ if (p->pw_gid == 0) { ++ /* EDR check for an already existing gid */ ++ while (getgrgid(p->pw_uid) != NULL) ++ p->pw_uid++; ++ ++ /* EDR also check for an existing group definition */ ++ if (getgrnam(p->pw_name) != NULL) ++ return 3; ++ ++ /* EDR create new gid always = uid */ ++ p->pw_gid = p->pw_uid; ++ } + + /* EDR bounds check */ + if ((p->pw_uid > max) || (p->pw_uid < min)) + return 2; + +- /* EDR create new gid always = uid */ +- p->pw_gid = p->pw_uid; +- + /* return 1; */ + return 0; + } +@@ -136,7 +142,7 @@ + } + + /* putpwent(3) remix */ +-static int adduser(const char *filename, struct passwd *p) ++static int adduser(const char *filename, struct passwd *p, int makehome, int setpass) + { + FILE *passwd; + int r; +@@ -144,6 +150,11 @@ + FILE *shadow; + struct spwd *sp; + #endif ++ int new_group = 1; ++ ++ /* if using a pre-existing group, don't create one */ ++ if (p->pw_gid != 0) ++ new_group = 0; + + /* make sure everything is kosher and setup uid && gid */ + passwd = wfopen(filename, "a"); +@@ -194,29 +205,36 @@ + } + #endif + +- /* add to group */ +- /* addgroup should be responsible for dealing w/ gshadow */ +- addgroup_wrapper(p->pw_name, p->pw_gid); ++ if (new_group) { ++ /* add to group */ ++ /* addgroup should be responsible for dealing w/ gshadow */ ++ addgroup_wrapper(p->pw_name, p->pw_gid); ++ } + + /* Clear the umask for this process so it doesn't + * * screw up the permissions on the mkdir and chown. */ + umask(0); + +- /* mkdir */ +- if (mkdir(p->pw_dir, 0755)) { +- perror_msg("%s", p->pw_dir); +- } +- /* Set the owner and group so it is owned by the new user. */ +- if (chown(p->pw_dir, p->pw_uid, p->pw_gid)) { +- perror_msg("%s", p->pw_dir); +- } +- /* Now fix up the permissions to 2755. Can't do it before now +- * since chown will clear the setgid bit */ +- if (chmod(p->pw_dir, 02755)) { +- perror_msg("%s", p->pw_dir); ++ if (makehome) { ++ /* mkdir */ ++ if (mkdir(p->pw_dir, 0755)) { ++ perror_msg("%s", p->pw_dir); ++ } ++ /* Set the owner and group so it is owned by the new user. */ ++ if (chown(p->pw_dir, p->pw_uid, p->pw_gid)) { ++ perror_msg("%s", p->pw_dir); ++ } ++ /* Now fix up the permissions to 2755. Can't do it before now ++ * since chown will clear the setgid bit */ ++ if (chmod(p->pw_dir, 02755)) { ++ perror_msg("%s", p->pw_dir); ++ } ++ } ++ ++ if (setpass) { ++ /* interactively set passwd */ ++ passwd_wrapper(p->pw_name); + } +- /* interactively set passwd */ +- passwd_wrapper(p->pw_name); + + return 0; + } +@@ -228,6 +246,15 @@ + return geteuid(); + } + ++struct option long_options[] = { ++ { "home", 1, NULL, 'h' }, ++ { "disabled-password", 0, NULL, 'D' }, ++ { "system", 0, NULL, 'S' }, ++ { "ingroup", 1, NULL, 'G' }, ++ { "no-create-home", 0, NULL, 'H' }, ++ { 0, 0, 0, 0 } ++}; ++ + /* + * adduser will take a login_name as its first parameter. + * +@@ -244,6 +271,11 @@ + const char *gecos; + const char *home = NULL; + const char *shell; ++ const char *usegroup = NULL; ++ int option_index = -1; ++ int setpass = 1; ++ int makehome = 1; ++ int system = 0; + + struct passwd pw; + +@@ -255,7 +287,7 @@ + shell = default_shell; + + /* get args */ +- while ((opt = getopt (argc, argv, "h:g:s:")) != -1) { ++ while ((opt = getopt_long (argc, argv, "h:g:s:G:DSH", long_options, &option_index)) != -1) { + switch (opt) { + case 'h': + home = optarg; +@@ -266,6 +298,18 @@ + case 's': + shell = optarg; + break; ++ case 'H': ++ makehome = 0; ++ break; ++ case 'D': ++ setpass = 0; ++ break; ++ case 'S': ++ system = 1; ++ break; ++ case 'G': ++ usegroup = optarg; ++ break; + default: + show_usage (); + break; +@@ -301,8 +345,19 @@ + pw.pw_dir = (char *)home; + pw.pw_shell = (char *)shell; + ++ if (usegroup) { ++ /* Add user to a group that already exists */ ++ struct group *g; ++ ++ g = getgrnam(usegroup); ++ if (g == NULL) ++ error_msg_and_die("group %s does not exist", usegroup); ++ ++ pw.pw_gid = g->gr_gid; ++ } ++ + /* grand finale */ +- return adduser(PASSWD_FILE, &pw); ++ return adduser(PASSWD_FILE, &pw, makehome, setpass); + } + +-/* $Id: adduser.c,v 1.37 2002/12/12 08:46:03 andersen Exp $ */ ++/* $Id: adduser.c,v 1.38 2003/06/21 19:35:42 andersen Exp $ */ +Index: install.sh +=================================================================== +RCS file: /var/cvs/tinylogin/install.sh,v +retrieving revision 1.10 +retrieving revision 1.11 +diff -u -r1.10 -r1.11 +--- a/install.sh 23 Jun 2002 03:09:07 -0000 1.10 ++++ b/install.sh 6 Mar 2003 19:29:17 -0000 1.11 +@@ -21,11 +21,11 @@ + h=`sort tinylogin.links | uniq` + + +-mkdir -p $prefix/bin || exit 1 ++install -d -m 0755 $prefix/bin || exit 1 + + for i in $h ; do + appdir=`dirname $i` +- mkdir -p $prefix/$appdir || exit 1 ++ install -d -m 0755 $prefix/$appdir || exit 1 + if [ "$2" = "--hardlinks" ]; then + bb_path="$prefix/bin/tinylogin" + else +Index: passwd.c +=================================================================== +RCS file: /var/cvs/tinylogin/passwd.c,v +retrieving revision 1.19 +retrieving revision 1.20 +diff -u -r1.19 -r1.20 +--- a/passwd.c 7 Nov 2002 02:34:15 -0000 1.19 ++++ b/passwd.c 17 Feb 2003 11:51:55 -0000 1.20 +@@ -25,10 +25,6 @@ + { + int x = 0; /* standart: DES */ + +-#ifdef CONFIG_FEATURE_SHA1_PASSWORDS +- if (strcasecmp(a, "sha1") == 0) +- x = 2; +-#endif + if (strcasecmp(a, "md5") == 0) + x = 1; + return x; +@@ -394,11 +390,6 @@ + bzero(cp, strlen(cp)); + bzero(orig, sizeof(orig)); + +-#ifdef CONFIG_FEATURE_SHA1_PASSWORDS +- if (algo == 2) { +- cp = pw_encrypt(pass, "$2$"); +- } else +-#endif + if (algo == 1) { + cp = pw_encrypt(pass, "$1$"); + } else +Index: sha1.c +=================================================================== +RCS file: sha1.c +diff -N sha1.c +--- a/sha1.c 20 Dec 2000 21:54:28 -0000 1.2 ++++ /dev/null 1 Jan 1970 00:00:00 -0000 +@@ -1,187 +0,0 @@ +-/* vi: set sw=4 ts=4: */ +-/* +- Implements the Secure Hash Algorithm (SHA1) +- +- Copyright (C) 1999 Scott G. Miller +- +- Released under the terms of the GNU General Public License v2 +- see file COPYING for details +- +- Credits: +- Robert Klep <robert@ilse.nl> -- Expansion function fix +- --- +- FIXME: This source takes int to be a 32 bit integer. This +- may vary from system to system. I'd use autoconf if I was familiar +- with it. Anyone want to help me out? +-*/ +- +-void sha_hash(int *, int *); +-void sha_init(int *); +-char *sprint_hash(int *); +-void do_sha_hash(int *, int *); +- +-/* +- added 3 functions for sha passowrd stuff (mainly inspired from stuff seen in main.c from shasum-1.3 package) +-*/ +-#include <stdio.h> +-#include <string.h> +-#include <stdlib.h> +- +-#include <endian.h> +-/* On big endian machines, we need to reverse the input to process +- the blocks correctly */ +- +-#define switch_endianness(x) (x<<24 & 0xff000000) | \ +- (x<<8 & 0x00ff0000) | \ +- (x>>8 & 0x0000ff00) | \ +- (x>>24 & 0x000000ff) +- +-/* Initial hash values */ +-#define Ai 0x67452301 +-#define Bi 0xefcdab89 +-#define Ci 0x98badcfe +-#define Di 0x10325476 +-#define Ei 0xc3d2e1f0 +- +-/* SHA1 round constants */ +-#define K1 0x5a827999 +-#define K2 0x6ed9eba1 +-#define K3 0x8f1bbcdc +-#define K4 0xca62c1d6 +- +-/* Round functions. Note that f2() is used in both rounds 2 and 4 */ +-#define f1(B,C,D) ((B & C) | ((~B) & D)) +-#define f2(B,C,D) (B ^ C ^ D) +-#define f3(B,C,D) ((B & C) | (B & D) | (C & D)) +- +-/* left circular shift functions (rotate left) */ +-#define rol1(x) ((x<<1) | ((x>>31) & 1)) +-#define rol5(A) ((A<<5) | ((A>>27) & 0x1f)) +-#define rol30(B) ((B<<30) | ((B>>2) & 0x3fffffff)) +- +-/* +- Hashes 'data', which should be a pointer to 512 bits of data (sixteen +- 32 bit ints), into the ongoing 160 bit hash value (five 32 bit ints) +- 'hash' +-*/ +-void sha_hash(int *data, int *hash) +-{ +- int W[80]; +- unsigned int A = hash[0], B = hash[1], C = hash[2], D = hash[3], E = +- hash[4]; +- unsigned int t, x, TEMP; +- +- for (t = 0; t < 16; t++) { +-#ifdef BIG_ENDIAN +- W[t] = switch_endianness(data[t]); +-#else +- W[t] = data[t]; +-#endif +- } +- +- +- /* SHA1 Data expansion */ +- for (t = 16; t < 80; t++) { +- x = W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16]; +- W[t] = rol1(x); +- } +- +- /* SHA1 main loop (t=0 to 79) +- This is broken down into four subloops in order to use +- the correct round function and constant */ +- for (t = 0; t < 20; t++) { +- TEMP = rol5(A) + f1(B, C, D) + E + W[t] + K1; +- E = D; +- D = C; +- C = rol30(B); +- B = A; +- A = TEMP; +- } +- for (; t < 40; t++) { +- TEMP = rol5(A) + f2(B, C, D) + E + W[t] + K2; +- E = D; +- D = C; +- C = rol30(B); +- B = A; +- A = TEMP; +- } +- for (; t < 60; t++) { +- TEMP = rol5(A) + f3(B, C, D) + E + W[t] + K3; +- E = D; +- D = C; +- C = rol30(B); +- B = A; +- A = TEMP; +- } +- for (; t < 80; t++) { +- TEMP = rol5(A) + f2(B, C, D) + E + W[t] + K4; +- E = D; +- D = C; +- C = rol30(B); +- B = A; +- A = TEMP; +- } +- hash[0] += A; +- hash[1] += B; +- hash[2] += C; +- hash[3] += D; +- hash[4] += E; +-} +- +-/* +- Takes a pointer to a 160 bit block of data (five 32 bit ints) and +- intializes it to the start constants of the SHA1 algorithm. This +- must be called before using hash in the call to sha_hash +-*/ +-void sha_init(int *hash) +-{ +- hash[0] = Ai; +- hash[1] = Bi; +- hash[2] = Ci; +- hash[3] = Di; +- hash[4] = Ei; +-} +- +- +-/* +- * write the hash to a string +- */ +-char *sprint_sha1_hash(int *hashval) +-{ +- int x = 0; +- char *out = NULL; +- +- if ((out = malloc(43)) == NULL) +- return NULL; +- memset(out, 0x00, 43); +- strcpy(out, "$2$"); +- for (x = 0; x < 5; x++) { +- sprintf(out + (x * 8) + 3, "%08x", hashval[x]); +- } +- out[43] = 0; +- return out; +-} +- +- +-/* +- * hash the password +- */ +-void do_sha_hash(int *hashval, int *pw) +-{ +- sha_init(hashval); +- sha_hash(pw, hashval); +-} +- +- +-/* +- * hash a charakter string and return the 160bit integer in hex as a character string +- */ +-char *sha1_crypt(const char *pw) +-{ +- int hashval[20]; +- +- memset(hashval, 0x00, sizeof(hashval)); +- do_sha_hash(hashval, (int *) ((char *) pw + 3)); +- +- return sprint_sha1_hash(hashval); +-} +Index: vlock.c +=================================================================== +RCS file: /var/cvs/tinylogin/vlock.c,v +retrieving revision 1.13 +retrieving revision 1.14 +diff -u -r1.13 -r1.14 +--- a/vlock.c 19 Sep 2002 03:50:31 -0000 1.13 ++++ b/vlock.c 17 Feb 2003 11:51:56 -0000 1.14 +@@ -26,7 +26,7 @@ + * minimalistic vlock. + */ + /* Fixed by Erik Andersen to do passwords the tinylogin way... +- * It now works with md5, sha1, etc passwords. */ ++ * It now works with md5, etc passwords. */ + + #include "tinylogin.h" + #include <stdio.h> +Index: docs/tinylogin.busybox.net/index.html +=================================================================== +RCS file: /var/cvs/tinylogin/docs/tinylogin.busybox.net/index.html,v +retrieving revision 1.23 +retrieving revision 1.25 +diff -u -r1.23 -r1.25 +--- a/docs/tinylogin.busybox.net/index.html 3 Jan 2003 10:56:32 -0000 1.23 ++++ b/docs/tinylogin.busybox.net/index.html 3 Jan 2003 11:21:53 -0000 1.25 +@@ -56,6 +56,9 @@ + Erik Andersen</a>, and licensed under the + <a href="http://www.gnu.org/copyleft/gpl.html">GNU GENERAL PUBLIC LICENSE</a>. + ++<h3>Mailing List Information</h3> ++Here are the Tinylogin <a href="/lists/tinylogin/">mailing list archives</a><br> ++To subscribe, go and visit <a href= "/mailman/listinfo/tinylogin">this page</a>. + + <!-- Begin Download section --> + +@@ -222,19 +225,19 @@ + <ul> + <li> <A HREF="http://freshmeat.net/projects/tinylogin/?highlight=tinylogin"> + Freshmeat AppIndex record for TinyLogin</A> ++ <p> + + <li><a href="http://www.busybox.net/">BusyBox</a> + combines tiny versions of many common UNIX utilities into a single small + executable. It provides minimalist replacements for most of the utilities + you usually find on a standard Linux system. +- + <p> ++ + <li><a href="http://uclibc.org/uClibc.html">uClibc</a> + is a C library for embedded systems. You can actually statically link + a "Hello World" application under x86 that only takes 4k (as opposed to + 200k under GNU libc). It can do dynamic linking too and works nicely with + BusyBox to create very small embedded systems. +- + <p> + + </ul> +Index: include/libbb.h +=================================================================== +RCS file: /var/cvs/tinylogin/include/libbb.h,v +retrieving revision 1.1 +retrieving revision 1.2 +diff -u -r1.1 -r1.2 +--- a/include/libbb.h 23 Jun 2002 03:09:10 -0000 1.1 ++++ b/include/libbb.h 17 Feb 2003 11:51:57 -0000 1.2 +@@ -39,9 +39,6 @@ + #ifdef CONFIG_FEATURE_SHADOWPASSWDS + #include "shadow_.h" + #endif +-#ifdef CONFIG_FEATURE_SHA1_PASSWORDS +-# include "sha1.h" +-#endif + + #if (__GNU_LIBRARY__ < 5) && (!defined __dietlibc__) + /* libc5 doesn't define socklen_t */ +Index: include/sha1.h +=================================================================== +RCS file: include/sha1.h +diff -N include/sha1.h +--- a/include/sha1.h 23 Jun 2002 03:09:10 -0000 1.1 ++++ /dev/null 1 Jan 1970 00:00:00 -0000 +@@ -1,3 +0,0 @@ +-/* SHA1.H - header file for SHA1.C */ +- +-char *sha1_crypt(const char *pw); +Index: include/usage.h +=================================================================== +RCS file: /var/cvs/tinylogin/include/usage.h,v +retrieving revision 1.2 +retrieving revision 1.3 +diff -u -r1.2 -r1.3 +--- a/include/usage.h 3 Jul 2002 05:57:00 -0000 1.2 ++++ b/include/usage.h 17 Feb 2003 11:51:57 -0000 1.3 +@@ -33,11 +33,6 @@ + "\t-h\tName of the remote host for this login.\n" \ + "\t-p\tPreserve environment." + +-#ifdef CONFIG_FEATURE_SHA1_PASSWORDS +- #define PASSWORD_ALG_TYPES(a) a +-#else +- #define PASSWORD_ALG_TYPES(a) +-#endif + #define passwd_trivial_usage \ + "[OPTION] [name]" + #define passwd_full_usage \ +@@ -46,7 +41,6 @@ + "Options:\n" \ + "\t-a\tDefine which algorithm shall be used for the password.\n" \ + "\t\t\t(Choices: des, md5" \ +- PASSWORD_ALG_TYPES(", sha1") \ + ")\n\t-d\tDelete the password for the specified user account.\n" \ + "\t-l\tLocks (disables) the specified user account.\n" \ + "\t-u\tUnlocks (re-enables) the specified user account." +Index: libbb/obscure.c +=================================================================== +RCS file: /var/cvs/tinylogin/libbb/obscure.c,v +retrieving revision 1.2 +retrieving revision 1.3 +diff -u -r1.2 -r1.3 +--- a/libbb/obscure.c 23 Jun 2002 04:05:59 -0000 1.2 ++++ b/libbb/obscure.c 30 Jul 2003 08:41:33 -0000 1.3 +@@ -44,7 +44,7 @@ + * can't be a palindrome - like `R A D A R' or `M A D A M' + */ + +-static int palindrome(const char *old, const char *newval) ++static int palindrome(const char *newval) + { + int i, j; + +@@ -79,24 +79,25 @@ + * a nice mix of characters. + */ + +-static int simple(const char *old, const char *newval) ++static int simple(const char *newval) + { + int digits = 0; + int uppers = 0; + int lowers = 0; + int others = 0; ++ int c; + int size; + int i; + +- for (i = 0; newval[i]; i++) { +- if (isdigit(newval[i])) +- digits++; +- else if (isupper(newval[i])) +- uppers++; +- else if (islower(newval[i])) +- lowers++; ++ for (i = 0; (c = *newval++) != 0; i++) { ++ if (isdigit(c)) ++ digits = c; ++ else if (isupper(c)) ++ uppers = c; ++ else if (islower(c)) ++ lowers = c; + else +- others++; ++ others = c; + } + + /* +@@ -129,49 +130,53 @@ + return string; + } + +-static char *password_check(const char *old, const char *newval, const struct passwd *pwdp) ++static const char * ++password_check(const char *old, const char *newval, const struct passwd *pwdp) + { +- char *msg = NULL; +- char *oldmono, *newmono, *wrapped; ++ const char *msg; ++ char *newmono, *wrapped; ++ int lenwrap; + + if (strcmp(newval, old) == 0) + return "no change"; ++ if (simple(newval)) ++ return "too simple"; + ++ msg = NULL; + newmono = str_lower(xstrdup(newval)); +- oldmono = str_lower(xstrdup(old)); +- wrapped = (char *) xmalloc(strlen(oldmono) * 2 + 1); +- strcpy(wrapped, oldmono); +- strcat(wrapped, oldmono); ++ lenwrap = strlen(old) * 2 + 1; ++ wrapped = (char *) xmalloc(lenwrap); ++ str_lower(strcpy(wrapped, old)); + +- if (palindrome(oldmono, newmono)) ++ if (palindrome(newmono)) + msg = "a palindrome"; + +- if (!msg && strcmp(oldmono, newmono) == 0) ++ else if (strcmp(wrapped, newmono) == 0) + msg = "case changes only"; + +- if (!msg && similiar(oldmono, newmono)) ++ else if (similiar(wrapped, newmono)) + msg = "too similiar"; + +- if (!msg && simple(old, newval)) +- msg = "too simple"; +- +- if (!msg && strstr(wrapped, newmono)) +- msg = "rotated"; ++ else { ++ safe_strncpy(wrapped + lenwrap, wrapped, lenwrap + 1); ++ if (strstr(wrapped, newmono)) ++ msg = "rotated"; ++ } + + bzero(newmono, strlen(newmono)); +- bzero(oldmono, strlen(oldmono)); +- bzero(wrapped, strlen(wrapped)); ++ bzero(wrapped, lenwrap); + free(newmono); +- free(oldmono); + free(wrapped); + + return msg; + } + +-static char *obscure_msg(const char *old, const char *newval, const struct passwd *pwdp) ++static const char * ++obscure_msg(const char *old, const char *newval, const struct passwd *pwdp) + { + int maxlen, oldlen, newlen; +- char *new1, *old1, *msg; ++ char *new1, *old1; ++ const char *msg; + + oldlen = strlen(old); + newlen = strlen(newval); +@@ -233,7 +238,7 @@ + + extern int obscure(const char *old, const char *newval, const struct passwd *pwdp) + { +- char *msg = obscure_msg(old, newval, pwdp); ++ const char *msg = obscure_msg(old, newval, pwdp); + + /* if (msg) { */ + if (msg != NULL) { +Index: libbb/pw_encrypt.c +=================================================================== +RCS file: /var/cvs/tinylogin/libbb/pw_encrypt.c,v +retrieving revision 1.1 +retrieving revision 1.2 +diff -u -r1.1 -r1.2 +--- a/libbb/pw_encrypt.c 23 Jun 2002 03:09:12 -0000 1.1 ++++ b/libbb/pw_encrypt.c 17 Feb 2003 11:51:58 -0000 1.2 +@@ -30,11 +30,6 @@ + static char cipher[128]; + char *cp; + +-#ifdef CONFIG_FEATURE_SHA1_PASSWORDS +- if (strncmp(salt, "$2$", 3) == 0) { +- return sha1_crypt(clear); +- } +-#endif + cp = (char *) crypt(clear, salt); + /* if crypt (a nonstandard crypt) returns a string too large, + truncate it so we don't overrun buffers and hope there is |