New upstream version 4.15.1
This commit is contained in:
+1
-2
@@ -1,5 +1,4 @@
|
||||
# This is a dummy Makefile.am to get automake work flawlessly,
|
||||
# and also cooperate to make a distribution for `make dist'
|
||||
|
||||
EXTRA_DIST = HOWTO README.limits \
|
||||
README.platforms WISHLIST console.c.spec.txt cracklib26.diff
|
||||
EXTRA_DIST = HOWTO README.limits
|
||||
|
||||
+16
-4
@@ -141,6 +141,8 @@ AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CMOCKA_CFLAGS = @CMOCKA_CFLAGS@
|
||||
CMOCKA_LIBS = @CMOCKA_LIBS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CSCOPE = @CSCOPE@
|
||||
@@ -174,9 +176,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBACL = @LIBACL@
|
||||
LIBADD_DL = @LIBADD_DL@
|
||||
LIBADD_DLD_LINK = @LIBADD_DLD_LINK@
|
||||
LIBADD_DLOPEN = @LIBADD_DLOPEN@
|
||||
LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@
|
||||
LIBATTR = @LIBATTR@
|
||||
LIBAUDIT = @LIBAUDIT@
|
||||
LIBCRACK = @LIBCRACK@
|
||||
LIBBSD = @LIBBSD@
|
||||
LIBBSD_CFLAGS = @LIBBSD_CFLAGS@
|
||||
LIBBSD_LIBS = @LIBBSD_LIBS@
|
||||
LIBCRYPT = @LIBCRYPT@
|
||||
LIBECONF = @LIBECONF@
|
||||
LIBICONV = @LIBICONV@
|
||||
@@ -192,6 +200,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@
|
||||
LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@
|
||||
LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@
|
||||
LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@
|
||||
LIBSYSTEMD = @LIBSYSTEMD@
|
||||
LIBTCB = @LIBTCB@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
@@ -200,6 +209,8 @@ LN_S = @LN_S@
|
||||
LTLIBICONV = @LTLIBICONV@
|
||||
LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_DLLOADERS = @LT_DLLOADERS@
|
||||
LT_DLPREOPEN = @LT_DLPREOPEN@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
@@ -222,6 +233,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
POSUB = @POSUB@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
@@ -293,9 +307,7 @@ target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
EXTRA_DIST = HOWTO README.limits \
|
||||
README.platforms WISHLIST console.c.spec.txt cracklib26.diff
|
||||
|
||||
EXTRA_DIST = HOWTO README.limits
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
# $Id$
|
||||
#
|
||||
# This is the current (still incomplete) list of platforms this
|
||||
# package has been verified to work on. Additions (preferably
|
||||
# in the format as described below) are welcome. Thanks!
|
||||
#
|
||||
# V: last version reported to work
|
||||
# H: host type
|
||||
# L: Linux libc version
|
||||
# D: Linux distribution, or other OS name and version
|
||||
# C: changes (if any)
|
||||
# R: reported by
|
||||
|
||||
V: 980529
|
||||
H: sparc-unknown-linux-gnu
|
||||
L: glibc-2.0.7
|
||||
D: Ultrapenguin-1.0.9
|
||||
C: had to explicitly disable desrpc.
|
||||
R: Bjorn Christianson <bjorn@cascade.psychology.mcmaster.ca>
|
||||
|
||||
V: 980724
|
||||
H: i486-pc-linux-gnulibc1
|
||||
L: libc-5.4.33
|
||||
D: Debian-1.3.1.r6
|
||||
C: none (use dpkg-buildpackage)
|
||||
R: Marek Michalkiewicz <marekm@linux.org.pl>
|
||||
|
||||
V: current
|
||||
H: i686-pc-linux-gnu
|
||||
L: glibc-2.0.7.19981211
|
||||
D: Debian-2.1
|
||||
C: none (use dpkg-buildpackage)
|
||||
R: Marek Michalkiewicz <marekm@linux.org.pl>
|
||||
@@ -1,39 +0,0 @@
|
||||
$Id$
|
||||
|
||||
This is my wishlist for the shadow suite, in no particular order. Feel
|
||||
free to do anything from this list and mail me the diffs :-).
|
||||
|
||||
Patches in diff -u format, against the latest version (sometimes in the
|
||||
"beta" directory) are preferred and make my job easier. Please, no
|
||||
MIME, base64, quoted-printable, or HTML. For very big patches, or if
|
||||
your mailer can corrupt them, please use gzip and uuencode. Thanks!
|
||||
|
||||
New ideas to add to this list are welcome, too. --marekm
|
||||
|
||||
- fix all the bugs, of course
|
||||
- implement "su only" accounts (no logins, only su from other account)
|
||||
- rewrite getdef.c to be more general? (no hardcoded names)
|
||||
- patch for rlogind/telnetd to create utmp entry and fill in ut_addr
|
||||
- option to specify encrypted password in passwd (for yppasswdd, so it
|
||||
doesn't need to know about shadow/non-shadow); should probably use a pipe
|
||||
(less insecure than command line arguments)
|
||||
- add support for changing NIS passwords
|
||||
- add option to check passwords by piping them to external programs
|
||||
- add functionality of the contrib/rpasswd.c wrapper to passwd
|
||||
- option to generate pronounceable passwords (like on SCO), external program?
|
||||
- poppassd (remote password change for eudora etc.)
|
||||
- add support for passwd/shadow db files (glibc)
|
||||
- vipw: check password files for errors after editing
|
||||
- add "maximum time users allowed to stay logged in" limit option to logoutd
|
||||
- handle quotes in /etc/environment like the shell does (but sshd doesn't...)
|
||||
- better utmpx support (logoutd, ...)
|
||||
- better OPIE support (report number of logins left, etc.)
|
||||
- new option for /etc/suauth: don't load user's environment (force "su -")
|
||||
suggested by Ulisses Alonso Camaro
|
||||
- find out why recent releases won't compile on Solaris
|
||||
- newusers should be able to copy /etc/skel to the new home directory
|
||||
(like useradd)
|
||||
- add directories where other packages can add hooks for package-specific
|
||||
per-user configuration, to be executed with run-parts. Some hooks should
|
||||
be executed at package install time for existing users, likewise for
|
||||
package removal and possibly modification. (Debian Bug#36019)
|
||||
@@ -1,36 +0,0 @@
|
||||
$Id$
|
||||
|
||||
Specification for console.c source file --
|
||||
|
||||
input values --
|
||||
tty -- character pointer to device name with leading "/dev/"
|
||||
removed.
|
||||
|
||||
return values --
|
||||
0 -- false
|
||||
1 -- true
|
||||
|
||||
int console (char * tty)
|
||||
if "CONSOLE" string value is not present in login.defs
|
||||
return true
|
||||
|
||||
if the first character of "CONSOLE" string value is not "/"
|
||||
treat the string as a ":" delimited list of device
|
||||
names and search for the value of tty in that
|
||||
tokenized list.
|
||||
|
||||
if a match is found
|
||||
return true
|
||||
|
||||
return false
|
||||
|
||||
if the file named by "CONSOLE" cannot be opened
|
||||
return true
|
||||
|
||||
scan the file looking for a match between the input line
|
||||
and the value of tty
|
||||
|
||||
if a match is found
|
||||
return true
|
||||
|
||||
return false
|
||||
@@ -1,340 +0,0 @@
|
||||
diff -ur orig/cracklib26_small/cracklib/fascist.c cracklib26_small/cracklib/fascist.c
|
||||
--- orig/cracklib26_small/cracklib/fascist.c Mon Dec 15 02:56:55 1997
|
||||
+++ cracklib26_small/cracklib/fascist.c Sat Apr 4 22:14:45 1998
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <ctype.h>
|
||||
#include <sys/types.h>
|
||||
#include <pwd.h>
|
||||
+#include <string.h>
|
||||
|
||||
#define ISSKIP(x) (isspace(x) || ispunct(x))
|
||||
|
||||
@@ -460,28 +461,27 @@
|
||||
}
|
||||
|
||||
char *
|
||||
-FascistGecos(password, uid)
|
||||
+FascistGecosPw(password, pwd)
|
||||
char *password;
|
||||
- int uid;
|
||||
+ struct passwd *pwd;
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
int wc;
|
||||
char *ptr;
|
||||
- struct passwd *pwp;
|
||||
char gbuffer[STRINGSIZE];
|
||||
char tbuffer[STRINGSIZE];
|
||||
char *uwords[STRINGSIZE];
|
||||
char longbuffer[STRINGSIZE * 2];
|
||||
|
||||
- if (!(pwp = getpwuid(uid)))
|
||||
+ if (!pwd)
|
||||
{
|
||||
return ("you are not registered in the password file");
|
||||
}
|
||||
|
||||
/* lets get really paranoid and assume a dangerously long gecos entry */
|
||||
|
||||
- strncpy(tbuffer, pwp->pw_name, STRINGSIZE);
|
||||
+ strncpy(tbuffer, pwd->pw_name, STRINGSIZE);
|
||||
tbuffer[STRINGSIZE-1] = '\0';
|
||||
if (GTry(tbuffer, password))
|
||||
{
|
||||
@@ -490,12 +490,13 @@
|
||||
|
||||
/* it never used to be that you got passwd strings > 1024 chars, but now... */
|
||||
|
||||
- strncpy(tbuffer, pwp->pw_gecos, STRINGSIZE);
|
||||
+ strncpy(tbuffer, pwd->pw_gecos, STRINGSIZE);
|
||||
tbuffer[STRINGSIZE-1] = '\0';
|
||||
strcpy(gbuffer, Lowercase(tbuffer));
|
||||
|
||||
wc = 0;
|
||||
ptr = gbuffer;
|
||||
+ uwords[0] = (char *) 0;
|
||||
|
||||
while (*ptr)
|
||||
{
|
||||
@@ -530,6 +531,8 @@
|
||||
*(ptr++) = '\0';
|
||||
}
|
||||
}
|
||||
+ if (!uwords[0])
|
||||
+ return ((char *) 0); /* empty gecos */
|
||||
#ifdef DEBUG
|
||||
for (i = 0; uwords[i]; i++)
|
||||
{
|
||||
@@ -586,9 +589,10 @@
|
||||
}
|
||||
|
||||
char *
|
||||
-FascistLook(pwp, instring)
|
||||
+FascistLookPw(pwp, instring, pwd)
|
||||
PWDICT *pwp;
|
||||
char *instring;
|
||||
+ struct passwd *pwd;
|
||||
{
|
||||
int i;
|
||||
char *ptr;
|
||||
@@ -667,7 +671,7 @@
|
||||
return ("it looks like a National Insurance number.");
|
||||
}
|
||||
|
||||
- if (ptr = FascistGecos(password, getuid()))
|
||||
+ if (ptr = FascistGecosPw(password, pwd ? pwd : getpwuid(getuid())))
|
||||
{
|
||||
return (ptr);
|
||||
}
|
||||
@@ -715,9 +719,10 @@
|
||||
}
|
||||
|
||||
char *
|
||||
-FascistCheck(password, path)
|
||||
+FascistCheckPw(password, path, pwd)
|
||||
char *password;
|
||||
char *path;
|
||||
+ struct passwd *pwd;
|
||||
{
|
||||
static char lastpath[STRINGSIZE];
|
||||
static PWDICT *pwp;
|
||||
@@ -750,5 +755,29 @@
|
||||
strncpy(lastpath, path, STRINGSIZE);
|
||||
}
|
||||
|
||||
- return (FascistLook(pwp, pwtrunced));
|
||||
+ return (FascistLookPw(pwp, pwtrunced, pwd));
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+FascistGecos(password, uid)
|
||||
+ char *password;
|
||||
+ int uid;
|
||||
+{
|
||||
+ return (FascistGecosPw(password, getpwuid(uid)));
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+FascistLook(pwp, instring)
|
||||
+ PWDICT *pwp;
|
||||
+ char *instring;
|
||||
+{
|
||||
+ return (FascistLookPw(pwp, instring, (char *) 0));
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+FascistCheck(password, path)
|
||||
+ char *password;
|
||||
+ char *path;
|
||||
+{
|
||||
+ return (FascistCheckPw(password, path, (char *) 0));
|
||||
}
|
||||
diff -ur orig/cracklib26_small/cracklib/packer.h cracklib26_small/cracklib/packer.h
|
||||
--- orig/cracklib26_small/cracklib/packer.h Mon Dec 15 00:09:30 1997
|
||||
+++ cracklib26_small/cracklib/packer.h Sat Jan 10 22:13:46 1998
|
||||
@@ -34,6 +34,7 @@
|
||||
FILE *dfp;
|
||||
FILE *wfp;
|
||||
|
||||
+ int canfree;
|
||||
int32 flags;
|
||||
#define PFOR_WRITE 0x0001
|
||||
#define PFOR_FLUSH 0x0002
|
||||
diff -ur orig/cracklib26_small/cracklib/packlib.c cracklib26_small/cracklib/packlib.c
|
||||
--- orig/cracklib26_small/cracklib/packlib.c Fri Jul 9 22:22:58 1993
|
||||
+++ cracklib26_small/cracklib/packlib.c Sat Jan 10 22:28:49 1998
|
||||
@@ -16,7 +16,7 @@
|
||||
char *mode;
|
||||
{
|
||||
int32 i;
|
||||
- static PWDICT pdesc;
|
||||
+ PWDICT *pdesc;
|
||||
char iname[STRINGSIZE];
|
||||
char dname[STRINGSIZE];
|
||||
char wname[STRINGSIZE];
|
||||
@@ -25,92 +25,94 @@
|
||||
FILE *ifp;
|
||||
FILE *wfp;
|
||||
|
||||
- if (pdesc.header.pih_magic == PIH_MAGIC)
|
||||
- {
|
||||
- fprintf(stderr, "%s: another dictionary already open\n", prefix);
|
||||
+ if ((pdesc = (PWDICT *) malloc(sizeof(PWDICT))) == 0)
|
||||
return ((PWDICT *) 0);
|
||||
- }
|
||||
|
||||
- memset(&pdesc, '\0', sizeof(pdesc));
|
||||
+ memset(pdesc, '\0', sizeof(*pdesc));
|
||||
|
||||
sprintf(iname, "%s.pwi", prefix);
|
||||
sprintf(dname, "%s.pwd", prefix);
|
||||
sprintf(wname, "%s.hwm", prefix);
|
||||
|
||||
- if (!(pdesc.dfp = fopen(dname, mode)))
|
||||
+ if (!(pdesc->dfp = fopen(dname, mode)))
|
||||
{
|
||||
perror(dname);
|
||||
+ free(pdesc);
|
||||
return ((PWDICT *) 0);
|
||||
}
|
||||
|
||||
- if (!(pdesc.ifp = fopen(iname, mode)))
|
||||
+ if (!(pdesc->ifp = fopen(iname, mode)))
|
||||
{
|
||||
- fclose(pdesc.dfp);
|
||||
+ fclose(pdesc->dfp);
|
||||
perror(iname);
|
||||
+ free(pdesc);
|
||||
return ((PWDICT *) 0);
|
||||
}
|
||||
|
||||
- if (pdesc.wfp = fopen(wname, mode))
|
||||
+ if (pdesc->wfp = fopen(wname, mode))
|
||||
{
|
||||
- pdesc.flags |= PFOR_USEHWMS;
|
||||
+ pdesc->flags |= PFOR_USEHWMS;
|
||||
}
|
||||
|
||||
- ifp = pdesc.ifp;
|
||||
- dfp = pdesc.dfp;
|
||||
- wfp = pdesc.wfp;
|
||||
+ ifp = pdesc->ifp;
|
||||
+ dfp = pdesc->dfp;
|
||||
+ wfp = pdesc->wfp;
|
||||
|
||||
if (mode[0] == 'w')
|
||||
{
|
||||
- pdesc.flags |= PFOR_WRITE;
|
||||
- pdesc.header.pih_magic = PIH_MAGIC;
|
||||
- pdesc.header.pih_blocklen = NUMWORDS;
|
||||
- pdesc.header.pih_numwords = 0;
|
||||
+ pdesc->flags |= PFOR_WRITE;
|
||||
+ pdesc->header.pih_magic = PIH_MAGIC;
|
||||
+ pdesc->header.pih_blocklen = NUMWORDS;
|
||||
+ pdesc->header.pih_numwords = 0;
|
||||
|
||||
- fwrite((char *) &pdesc.header, sizeof(pdesc.header), 1, ifp);
|
||||
+ fwrite((char *) &pdesc->header, sizeof(pdesc->header), 1, ifp);
|
||||
} else
|
||||
{
|
||||
- pdesc.flags &= ~PFOR_WRITE;
|
||||
+ pdesc->flags &= ~PFOR_WRITE;
|
||||
|
||||
- if (!fread((char *) &pdesc.header, sizeof(pdesc.header), 1, ifp))
|
||||
+ if (!fread((char *) &pdesc->header, sizeof(pdesc->header), 1, ifp))
|
||||
{
|
||||
fprintf(stderr, "%s: error reading header\n", prefix);
|
||||
|
||||
- pdesc.header.pih_magic = 0;
|
||||
+ pdesc->header.pih_magic = 0;
|
||||
fclose(ifp);
|
||||
fclose(dfp);
|
||||
+ free(pdesc);
|
||||
return ((PWDICT *) 0);
|
||||
}
|
||||
|
||||
- if (pdesc.header.pih_magic != PIH_MAGIC)
|
||||
+ if (pdesc->header.pih_magic != PIH_MAGIC)
|
||||
{
|
||||
fprintf(stderr, "%s: magic mismatch\n", prefix);
|
||||
|
||||
- pdesc.header.pih_magic = 0;
|
||||
+ pdesc->header.pih_magic = 0;
|
||||
fclose(ifp);
|
||||
fclose(dfp);
|
||||
+ free(pdesc);
|
||||
return ((PWDICT *) 0);
|
||||
}
|
||||
|
||||
- if (pdesc.header.pih_blocklen != NUMWORDS)
|
||||
+ if (pdesc->header.pih_blocklen != NUMWORDS)
|
||||
{
|
||||
fprintf(stderr, "%s: size mismatch\n", prefix);
|
||||
|
||||
- pdesc.header.pih_magic = 0;
|
||||
+ pdesc->header.pih_magic = 0;
|
||||
fclose(ifp);
|
||||
fclose(dfp);
|
||||
+ free(pdesc);
|
||||
return ((PWDICT *) 0);
|
||||
}
|
||||
|
||||
- if (pdesc.flags & PFOR_USEHWMS)
|
||||
+ if (pdesc->flags & PFOR_USEHWMS)
|
||||
{
|
||||
- if (fread(pdesc.hwms, 1, sizeof(pdesc.hwms), wfp) != sizeof(pdesc.hwms))
|
||||
+ if (fread(pdesc->hwms, 1, sizeof(pdesc->hwms), wfp) != sizeof(pdesc->hwms))
|
||||
{
|
||||
- pdesc.flags &= ~PFOR_USEHWMS;
|
||||
+ pdesc->flags &= ~PFOR_USEHWMS;
|
||||
}
|
||||
}
|
||||
}
|
||||
-
|
||||
- return (&pdesc);
|
||||
+ pdesc->canfree = 1;
|
||||
+ return (pdesc);
|
||||
}
|
||||
|
||||
int
|
||||
@@ -159,8 +161,13 @@
|
||||
|
||||
fclose(pwp->ifp);
|
||||
fclose(pwp->dfp);
|
||||
+ if (pwp->wfp)
|
||||
+ fclose(pwp->wfp);
|
||||
|
||||
- pwp->header.pih_magic = 0;
|
||||
+ if (pwp->canfree)
|
||||
+ free(pwp);
|
||||
+ else
|
||||
+ pwp->header.pih_magic = 0;
|
||||
|
||||
return (0);
|
||||
}
|
||||
@@ -307,6 +314,11 @@
|
||||
register char *this;
|
||||
int idx;
|
||||
|
||||
+/*
|
||||
+ * comment in npasswd-2.0beta4 says this:
|
||||
+ * This does not work under all circumstances, so don't bother
|
||||
+ */
|
||||
+#if 0
|
||||
if (pwp->flags & PFOR_USEHWMS)
|
||||
{
|
||||
idx = string[0] & 0xff;
|
||||
@@ -317,6 +329,10 @@
|
||||
lwm = 0;
|
||||
hwm = PW_WORDS(pwp) - 1;
|
||||
}
|
||||
+#else
|
||||
+ lwm = 0;
|
||||
+ hwm = PW_WORDS(pwp);
|
||||
+#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
printf("---- %lu, %lu ----\n", lwm, hwm);
|
||||
diff -ur orig/cracklib26_small/util/mkdict cracklib26_small/util/mkdict
|
||||
--- orig/cracklib26_small/util/mkdict Fri Jul 9 22:23:03 1993
|
||||
+++ cracklib26_small/util/mkdict Sat Apr 4 22:31:45 1998
|
||||
@@ -14,9 +14,16 @@
|
||||
SORT="sort"
|
||||
###SORT="sort -T /tmp"
|
||||
|
||||
-cat $* |
|
||||
+### Use zcat to read compressed (as well as uncompressed) dictionaries.
|
||||
+### Compressed dictionaries can save quite a lot of disk space.
|
||||
+
|
||||
+CAT="gzip -cdf"
|
||||
+###CAT="zcat"
|
||||
+###CAT="cat"
|
||||
+
|
||||
+$CAT $* |
|
||||
tr '[A-Z]' '[a-z]' |
|
||||
- tr -cd '[\012a-z0-9]' |
|
||||
+ tr -cd '\012[a-z][0-9]' |
|
||||
$SORT |
|
||||
uniq |
|
||||
grep -v '^#' |
|
||||
Reference in New Issue
Block a user