Compare commits

...

2 Commits

Author SHA1 Message Date
Chris Hofstaedtler
a475f464e0 New upstream version 4.17.3 2025-02-24 22:57:12 +01:00
Chris Hofstaedtler
65261e28f4 New upstream version 4.17.2 2025-02-09 18:13:39 +01:00
550 changed files with 25907 additions and 4964 deletions

View File

@@ -20,10 +20,6 @@
/* Path for faillog file. */
#undef FAILLOG_FILE
/* Define to the type of elements in the array set by `getgroups'. Usually
this is either `int' or `gid_t'. */
#undef GETGROUPS_T
/* max group name length */
#undef GROUP_NAME_MAX_LENGTH
@@ -53,9 +49,6 @@
the CoreFoundation framework. */
#undef HAVE_CFPREFERENCESCOPYAPPVALUE
/* Define to 1 if you have the <crypt.h> header file. */
#undef HAVE_CRYPT_H
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
#undef HAVE_DCGETTEXT
@@ -119,24 +112,15 @@
/* Define to 1 if you have the `getusershell' function. */
#undef HAVE_GETUSERSHELL
/* Define to 1 if you have the <gshadow.h> header file. */
#undef HAVE_GSHADOW_H
/* Define if you have the iconv() function and it works. */
#undef HAVE_ICONV
/* Define to 1 if you have the `initgroups' function. */
#undef HAVE_INITGROUPS
/* Define to 1 if you have the `innetgr' function. */
#undef HAVE_INNETGR
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the <lastlog.h> header file. */
#undef HAVE_LASTLOG_H
/* Define to 1 if you have the `lckpwdf' function. */
#undef HAVE_LCKPWDF
@@ -164,9 +148,6 @@
/* Define to 1 if you have the <minix/config.h> header file. */
#undef HAVE_MINIX_CONFIG_H
/* Define to 1 if you have the <paths.h> header file. */
#undef HAVE_PATHS_H
/* Define to 1 if you have the `putgrent' function. */
#undef HAVE_PUTGRENT
@@ -179,9 +160,6 @@
/* Define to 1 if you have the <readpassphrase.h> header file. */
#undef HAVE_READPASSPHRASE_H
/* Define to 1 if you have the <rpc/key_prot.h> header file. */
#undef HAVE_RPC_KEY_PROT_H
/* Define to 1 if you have the `rpmatch' function. */
#undef HAVE_RPMATCH
@@ -197,9 +175,6 @@
/* Define to 1 if you have the <semanage/semanage.h> header file. */
#undef HAVE_SEMANAGE_SEMANAGE_H
/* Define to 1 if you have the `setgroups' function. */
#undef HAVE_SETGROUPS
/* Define to 1 if you have the `sgetgrent' function. */
#undef HAVE_SGETGRENT
@@ -209,12 +184,6 @@
/* Define to 1 if you have the `sgetspent' function. */
#undef HAVE_SGETSPENT
/* Define to 1 if you have the <sgtty.h> header file. */
#undef HAVE_SGTTY_H
/* Have working shadow group support in libc */
#undef HAVE_SHADOWGRP
/* Define if you have the shl_load function. */
#undef HAVE_SHL_LOAD
@@ -260,15 +229,6 @@
/* Define to 1 if `ut_xtime' is a member of `struct utmpx'. */
#undef HAVE_STRUCT_UTMPX_UT_XTIME
/* Define to 1 if you have the <sys/capability.h> header file. */
#undef HAVE_SYS_CAPABILITY_H
/* Define to 1 if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H
/* Define to 1 if you have the <sys/random.h> header file. */
#undef HAVE_SYS_RANDOM_H
/* Define to 1 if you have the <sys/statfs.h> header file. */
#undef HAVE_SYS_STATFS_H
@@ -281,9 +241,6 @@
/* Define to 1 if you have the <tcb.h> header file. */
#undef HAVE_TCB_H
/* Define to 1 if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
@@ -296,9 +253,6 @@
/* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */
#undef HAVE_UTIME_NULL
/* Define to 1 if you have the <utmp.h> header file. */
#undef HAVE_UTMP_H
/* Define to support vendor settings. */
#undef HAVE_VENDORDIR
@@ -517,9 +471,3 @@
/* Path for wtmp file. */
#undef _WTMP_FILE
/* Define to `int' if <sys/types.h> doesn't define. */
#undef gid_t
/* Define to `int' if <sys/types.h> doesn't define. */
#undef uid_t

619
configure vendored
View File

@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.71 for shadow 4.17.1.
# Generated by GNU Autoconf 2.71 for shadow 4.17.3.
#
# Report bugs to <pkg-shadow-devel@lists.alioth.debian.org>.
#
@@ -621,8 +621,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='shadow'
PACKAGE_TARNAME='shadow'
PACKAGE_VERSION='4.17.1'
PACKAGE_STRING='shadow 4.17.1'
PACKAGE_VERSION='4.17.3'
PACKAGE_STRING='shadow 4.17.3'
PACKAGE_BUGREPORT='pkg-shadow-devel@lists.alioth.debian.org'
PACKAGE_URL='https://github.com/shadow-maint/shadow'
@@ -671,6 +671,7 @@ INTLLIBS
LTLIBICONV
LIBICONV
INTL_MACOSX_LIBS
CPP
XGETTEXT_EXTRA_OPTIONS
MSGMERGE
XGETTEXT_015
@@ -744,7 +745,6 @@ USE_SHA_CRYPT_FALSE
USE_SHA_CRYPT_TRUE
GROUP_NAME_MAX_LENGTH
LIBOBJS
CPP
LIBADD_DL
LT_DLPREOPEN
LIBADD_DLD_LINK
@@ -932,14 +932,14 @@ CPPFLAGS
YACC
YFLAGS
LT_SYS_LIBRARY_PATH
CPP
PKG_CONFIG
PKG_CONFIG_PATH
PKG_CONFIG_LIBDIR
CMOCKA_CFLAGS
CMOCKA_LIBS
LIBBSD_CFLAGS
LIBBSD_LIBS'
LIBBSD_LIBS
CPP'
# Initialize some variables set by options.
@@ -1488,7 +1488,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures shadow 4.17.1 to adapt to many kinds of systems.
\`configure' configures shadow 4.17.3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1559,7 +1559,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of shadow 4.17.1:";;
short | recursive ) echo "Configuration of shadow 4.17.3:";;
esac
cat <<\_ACEOF
@@ -1657,7 +1657,6 @@ Some influential environment variables:
default value of `-d' given by some make applications.
LT_SYS_LIBRARY_PATH
User-defined run-time library search path.
CPP C preprocessor
PKG_CONFIG path to pkg-config utility
PKG_CONFIG_PATH
directories to add to pkg-config's search path
@@ -1669,6 +1668,7 @@ Some influential environment variables:
LIBBSD_CFLAGS
C compiler flags for LIBBSD, overriding pkg-config
LIBBSD_LIBS linker flags for LIBBSD, overriding pkg-config
CPP C preprocessor
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@@ -1738,7 +1738,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
shadow configure 4.17.1
shadow configure 4.17.3
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2045,44 +2045,6 @@ printf "%s\n" "$ac_res" >&6; }
} # ac_fn_c_check_member
# ac_fn_c_try_cpp LINENO
# ----------------------
# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_cpp ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
if { { ac_try="$ac_cpp conftest.$ac_ext"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
grep -v '^ *+' conftest.err >conftest.er1
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } > conftest.i && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}
then :
ac_retval=0
else $as_nop
printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_cpp
# ac_fn_c_try_run LINENO
# ----------------------
# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that
@@ -2314,6 +2276,44 @@ rm -f conftest.val
as_fn_set_status $ac_retval
} # ac_fn_c_compute_int
# ac_fn_c_try_cpp LINENO
# ----------------------
# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_cpp ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
if { { ac_try="$ac_cpp conftest.$ac_ext"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
grep -v '^ *+' conftest.err >conftest.er1
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } > conftest.i && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}
then :
ac_retval=0
else $as_nop
printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_cpp
ac_configure_args_raw=
for ac_arg
do
@@ -2338,7 +2338,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by shadow $as_me 4.17.1, which was
It was created by shadow $as_me 4.17.3, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -3611,7 +3611,7 @@ fi
# Define the identity of the package.
PACKAGE='shadow'
VERSION='4.17.1'
VERSION='4.17.3'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -14700,92 +14700,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_fn_c_check_header_compile "$LINENO" "crypt.h" "ac_cv_header_crypt_h" "$ac_includes_default"
if test "x$ac_cv_header_crypt_h" = xyes
then :
printf "%s\n" "#define HAVE_CRYPT_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "utmp.h" "ac_cv_header_utmp_h" "$ac_includes_default"
if test "x$ac_cv_header_utmp_h" = xyes
then :
printf "%s\n" "#define HAVE_UTMP_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" "$ac_includes_default"
if test "x$ac_cv_header_termio_h" = xyes
then :
printf "%s\n" "#define HAVE_TERMIO_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "sgtty.h" "ac_cv_header_sgtty_h" "$ac_includes_default"
if test "x$ac_cv_header_sgtty_h" = xyes
then :
printf "%s\n" "#define HAVE_SGTTY_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_ioctl_h" = xyes
then :
printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "paths.h" "ac_cv_header_paths_h" "$ac_includes_default"
if test "x$ac_cv_header_paths_h" = xyes
then :
printf "%s\n" "#define HAVE_PATHS_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "sys/capability.h" "ac_cv_header_sys_capability_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_capability_h" = xyes
then :
printf "%s\n" "#define HAVE_SYS_CAPABILITY_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "sys/random.h" "ac_cv_header_sys_random_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_random_h" = xyes
then :
printf "%s\n" "#define HAVE_SYS_RANDOM_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "gshadow.h" "ac_cv_header_gshadow_h" "$ac_includes_default"
if test "x$ac_cv_header_gshadow_h" = xyes
then :
printf "%s\n" "#define HAVE_GSHADOW_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "lastlog.h" "ac_cv_header_lastlog_h" "$ac_includes_default"
if test "x$ac_cv_header_lastlog_h" = xyes
then :
printf "%s\n" "#define HAVE_LASTLOG_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "rpc/key_prot.h" "ac_cv_header_rpc_key_prot_h" "$ac_includes_default"
if test "x$ac_cv_header_rpc_key_prot_h" = xyes
then :
printf "%s\n" "#define HAVE_RPC_KEY_PROT_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "acl/libacl.h" "ac_cv_header_acl_libacl_h" "$ac_includes_default"
if test "x$ac_cv_header_acl_libacl_h" = xyes
then :
printf "%s\n" "#define HAVE_ACL_LIBACL_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "attr/libattr.h" "ac_cv_header_attr_libattr_h" "$ac_includes_default"
if test "x$ac_cv_header_attr_libattr_h" = xyes
then :
printf "%s\n" "#define HAVE_ATTR_LIBATTR_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "attr/error_context.h" "ac_cv_header_attr_error_context_h" "$ac_includes_default"
if test "x$ac_cv_header_attr_error_context_h" = xyes
then :
printf "%s\n" "#define HAVE_ATTR_ERROR_CONTEXT_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "shadow.h" "ac_cv_header_shadow_h" "$ac_includes_default"
if test "x$ac_cv_header_shadow_h" = xyes
then :
@@ -14830,12 +14744,6 @@ if test "x$ac_cv_func_getusershell" = xyes
then :
printf "%s\n" "#define HAVE_GETUSERSHELL 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "initgroups" "ac_cv_func_initgroups"
if test "x$ac_cv_func_initgroups" = xyes
then :
printf "%s\n" "#define HAVE_INITGROUPS 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "lckpwdf" "ac_cv_func_lckpwdf"
if test "x$ac_cv_func_lckpwdf" = xyes
@@ -14848,12 +14756,6 @@ if test "x$ac_cv_func_lutimes" = xyes
then :
printf "%s\n" "#define HAVE_LUTIMES 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "setgroups" "ac_cv_func_setgroups"
if test "x$ac_cv_func_setgroups" = xyes
then :
printf "%s\n" "#define HAVE_SETGROUPS 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "updwtmpx" "ac_cv_func_updwtmpx"
if test "x$ac_cv_func_updwtmpx" = xyes
@@ -15175,240 +15077,6 @@ printf "%s\n" "#define HAVE_STRUCT_UTMPX_UT_XTIME 1" >>confdefs.h
fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
printf %s "checking how to run the C preprocessor... " >&6; }
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
if test ${ac_cv_prog_CPP+y}
then :
printf %s "(cached) " >&6
else $as_nop
# Double quotes because $CC needs to be expanded
for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
do
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
Syntax error
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
else $as_nop
# Broken: fails on valid input.
continue
fi
rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
# Broken: success on invalid input.
continue
else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
fi
rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok
then :
break
fi
done
ac_cv_prog_CPP=$CPP
fi
CPP=$ac_cv_prog_CPP
else
ac_cv_prog_CPP=$CPP
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
printf "%s\n" "$CPP" >&6; }
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
Syntax error
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
else $as_nop
# Broken: fails on valid input.
continue
fi
rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
# Broken: success on invalid input.
continue
else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
fi
rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok
then :
else $as_nop
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
See \`config.log' for more details" "$LINENO" 5; }
fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
printf %s "checking for uid_t in sys/types.h... " >&6; }
if test ${ac_cv_type_uid_t+y}
then :
printf %s "(cached) " >&6
else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
$EGREP "uid_t" >/dev/null 2>&1
then :
ac_cv_type_uid_t=yes
else $as_nop
ac_cv_type_uid_t=no
fi
rm -rf conftest*
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
printf "%s\n" "$ac_cv_type_uid_t" >&6; }
if test $ac_cv_type_uid_t = no; then
printf "%s\n" "#define uid_t int" >>confdefs.h
printf "%s\n" "#define gid_t int" >>confdefs.h
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking type of array argument to getgroups" >&5
printf %s "checking type of array argument to getgroups... " >&6; }
if test ${ac_cv_type_getgroups+y}
then :
printf %s "(cached) " >&6
else $as_nop
if test "$cross_compiling" = yes
then :
ac_cv_type_getgroups=cross
else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Thanks to Mike Rendell for this test. */
$ac_includes_default
#define NGID 256
#undef MAX
#define MAX(x, y) ((x) > (y) ? (x) : (y))
int
main (void)
{
gid_t gidset[NGID];
int i, n;
union { gid_t gval; long int lval; } val;
val.lval = -1;
for (i = 0; i < NGID; i++)
gidset[i] = val.gval;
n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1,
gidset);
/* Exit non-zero if getgroups seems to require an array of ints. This
happens when gid_t is short int but getgroups modifies an array
of ints. */
return n > 0 && gidset[n] != val.gval;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"
then :
ac_cv_type_getgroups=gid_t
else $as_nop
ac_cv_type_getgroups=int
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
if test $ac_cv_type_getgroups = cross; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <unistd.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
$EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1
then :
ac_cv_type_getgroups=gid_t
else $as_nop
ac_cv_type_getgroups=int
fi
rm -rf conftest*
fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5
printf "%s\n" "$ac_cv_type_getgroups" >&6; }
printf "%s\n" "#define GETGROUPS_T $ac_cv_type_getgroups" >>confdefs.h
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether utime accepts a null argument" >&5
@@ -15559,56 +15227,6 @@ printf "%s\n" "#define HAS_SECURE_GETENV 1" >>confdefs.h
fi
if test "$ac_cv_header_shadow_h" = "yes"; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working shadow group support" >&5
printf %s "checking for working shadow group support... " >&6; }
if test ${ac_cv_libc_shadowgrp+y}
then :
printf %s "(cached) " >&6
else $as_nop
if test "$cross_compiling" = yes
then :
ac_cv_libc_shadowgrp=no
else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <shadow.h>
#ifdef HAVE_GSHADOW_H
#include <gshadow.h>
#endif
int
main()
{
struct sgrp *sg = sgetsgent("test:x::");
/* NYS libc on Red Hat 3.0.3 has broken shadow group support */
return !sg || !sg->sg_adm || !sg->sg_mem;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"
then :
ac_cv_libc_shadowgrp=yes
else $as_nop
ac_cv_libc_shadowgrp=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libc_shadowgrp" >&5
printf "%s\n" "$ac_cv_libc_shadowgrp" >&6; }
if test "$ac_cv_libc_shadowgrp" = "yes"; then
printf "%s\n" "#define HAVE_SHADOWGRP 1" >>confdefs.h
fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking location of shared mail directory" >&5
printf %s "checking location of shared mail directory... " >&6; }
if test ${shadow_cv_maildir+y}
@@ -18612,6 +18230,139 @@ else $as_nop
fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
printf %s "checking how to run the C preprocessor... " >&6; }
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
if test ${ac_cv_prog_CPP+y}
then :
printf %s "(cached) " >&6
else $as_nop
# Double quotes because $CC needs to be expanded
for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
do
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
Syntax error
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
else $as_nop
# Broken: fails on valid input.
continue
fi
rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
# Broken: success on invalid input.
continue
else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
fi
rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok
then :
break
fi
done
ac_cv_prog_CPP=$CPP
fi
CPP=$ac_cv_prog_CPP
else
ac_cv_prog_CPP=$CPP
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
printf "%s\n" "$CPP" >&6; }
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
Syntax error
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
else $as_nop
# Broken: fails on valid input.
continue
fi
rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
# Broken: success on invalid input.
continue
else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
fi
rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok
then :
else $as_nop
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
See \`config.log' for more details" "$LINENO" 5; }
fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
acl_libdirstem=lib
@@ -20846,7 +20597,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by shadow $as_me 4.17.1, which was
This file was extended by shadow $as_me 4.17.3, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -20915,7 +20666,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
shadow config.status 4.17.1
shadow config.status 4.17.3
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"

View File

@@ -4,7 +4,7 @@ m4_define([libsubid_abi_major], 5)
m4_define([libsubid_abi_minor], 0)
m4_define([libsubid_abi_micro], 0)
m4_define([libsubid_abi], [libsubid_abi_major.libsubid_abi_minor.libsubid_abi_micro])
AC_INIT([shadow], [4.17.1], [pkg-shadow-devel@lists.alioth.debian.org], [],
AC_INIT([shadow], [4.17.3], [pkg-shadow-devel@lists.alioth.debian.org], [],
[https://github.com/shadow-maint/shadow])
AM_INIT_AUTOMAKE([1.11 foreign dist-xz subdir-objects tar-pax])
AC_CONFIG_MACRO_DIRS([m4])
@@ -36,20 +36,13 @@ LT_LIB_DLLOAD
dnl Checks for libraries.
dnl Checks for header files.
AC_CHECK_HEADERS(crypt.h utmp.h \
termio.h sgtty.h sys/ioctl.h paths.h \
sys/capability.h sys/random.h \
gshadow.h lastlog.h rpc/key_prot.h acl/libacl.h \
attr/libattr.h attr/error_context.h)
dnl shadow now uses the libc's shadow implementation
AC_CHECK_HEADER([shadow.h],,[AC_MSG_ERROR([You need a libc with shadow.h])])
AC_CHECK_FUNCS(arc4random_buf futimes \
getentropy getrandom getspnam getusershell \
initgroups lckpwdf lutimes \
setgroups updwtmpx innetgr \
lckpwdf lutimes \
updwtmpx innetgr \
getspnam_r \
rpmatch \
memset_explicit explicit_bzero stpecpy stpeprintf)
@@ -66,7 +59,6 @@ AC_CHECK_MEMBERS([struct utmpx.ut_name,
struct utmpx.ut_xtime],,,[[#include <utmpx.h>]])
dnl Checks for library functions.
AC_TYPE_GETGROUPS
AC_FUNC_UTIME_NULL
AC_REPLACE_FUNCS(putgrent putpwent putspent)
AC_REPLACE_FUNCS(sgetgrent sgetpwent sgetspent)
@@ -76,33 +68,6 @@ AC_CHECK_FUNC(secure_getenv, [AC_DEFINE(HAS_SECURE_GETENV,
1,
[Defined to 1 if you have the declaration of 'secure_getenv'])])
if test "$ac_cv_header_shadow_h" = "yes"; then
AC_CACHE_CHECK(for working shadow group support,
ac_cv_libc_shadowgrp,
AC_RUN_IFELSE([AC_LANG_SOURCE([
#include <shadow.h>
#ifdef HAVE_GSHADOW_H
#include <gshadow.h>
#endif
int
main()
{
struct sgrp *sg = sgetsgent("test:x::");
/* NYS libc on Red Hat 3.0.3 has broken shadow group support */
return !sg || !sg->sg_adm || !sg->sg_mem;
}]
)],
[ac_cv_libc_shadowgrp=yes],
[ac_cv_libc_shadowgrp=no],
[ac_cv_libc_shadowgrp=no]
)
)
if test "$ac_cv_libc_shadowgrp" = "yes"; then
AC_DEFINE(HAVE_SHADOWGRP, 1, [Have working shadow group support in libc])
fi
fi
AC_CACHE_CHECK([location of shared mail directory], shadow_cv_maildir,
[for shadow_cv_maildir in /var/mail /var/spool/mail /usr/spool/mail /usr/mail none; do
if test -d $shadow_cv_maildir; then

View File

@@ -1751,7 +1751,7 @@
}
#ifdef HAS_SHADOW
if ((pw->pw_passwd && pw->pw_passwd[0] == '@'
&& pw_auth (pw->pw_passwd+1, pw->pw_name, PW_LOGIN, NULL))
&& pw_auth(pw->pw_passwd+1, pw->pw_name))
|| !valid (passwd, pw)) {
return (UPAP_AUTHNAK);
}

View File

@@ -11,7 +11,6 @@ pamd_files = \
passwd
pamd_acct_tools_files = \
chage \
chgpasswd \
groupadd \
groupdel \

View File

@@ -342,7 +342,6 @@ top_srcdir = @top_srcdir@
pamd_files = chpasswd chfn chsh groupmems login newusers passwd \
$(am__append_2)
pamd_acct_tools_files = \
chage \
chgpasswd \
groupadd \
groupdel \

View File

@@ -1,4 +0,0 @@
#%PAM-1.0
auth sufficient pam_rootok.so
account required pam_permit.so
password include system-auth

View File

@@ -155,6 +155,14 @@ libshadow_la_SOURCES = \
run_part.h \
run_part.c \
salt.c \
search/cmp/cmp.c \
search/cmp/cmp.h \
search/l/lfind.c \
search/l/lfind.h \
search/l/lsearch.c \
search/l/lsearch.h \
search/sort/qsort.c \
search/sort/qsort.h \
selinux.c \
semanage.c \
setugid.c \
@@ -165,6 +173,8 @@ libshadow_la_SOURCES = \
sgroupio.c \
sgroupio.h\
shadow.c \
shadow/grp/agetgroups.c \
shadow/grp/agetgroups.h \
shadowio.c \
shadowio.h \
shadowlog.c \
@@ -176,6 +186,8 @@ libshadow_la_SOURCES = \
spawn.c \
sssd.c \
sssd.h \
string/ctype/strisascii/strisdigit.c \
string/ctype/strisascii/strisdigit.h \
string/memset/memzero.c \
string/memset/memzero.h \
string/sprintf/snprintf.c \
@@ -186,12 +198,12 @@ libshadow_la_SOURCES = \
string/sprintf/xasprintf.h \
string/strchr/strchrcnt.c \
string/strchr/strchrcnt.h \
string/strchr/stpspn.c \
string/strchr/stpspn.h \
string/strchr/strchrscnt.c \
string/strchr/strchrscnt.h \
string/strchr/strnul.c \
string/strchr/strnul.h \
string/strchr/strrspn.c \
string/strchr/strrspn.h \
string/strcmp/strcaseeq.c \
string/strcmp/strcaseeq.h \
string/strcmp/streq.c \
string/strcmp/streq.h \
string/strcpy/stpecpy.c \
@@ -210,6 +222,16 @@ libshadow_la_SOURCES = \
string/strdup/xstrndup.h \
string/strftime.c \
string/strftime.h \
string/strspn/stpspn.c \
string/strspn/stpspn.h \
string/strspn/stprcspn.c \
string/strspn/stprcspn.h \
string/strspn/stprspn.c \
string/strspn/stprspn.h \
string/strspn/strrcspn.c \
string/strspn/strrcspn.h \
string/strspn/strrspn.c \
string/strspn/strrspn.h \
string/strtok/stpsep.c \
string/strtok/stpsep.h \
strtoday.c \

View File

@@ -151,19 +151,24 @@ am__libshadow_la_SOURCES_DIST = addgrps.c adds.c adds.h age.c \
pam_defs.h pam_pass.c pam_pass_non_interactive.c port.c port.h \
prefix_flag.c prototypes.h pwauth.c pwauth.h pwio.c pwio.h \
pwd_init.c pwd2spwd.c pwdcheck.c pwmem.c remove_tree.c \
root_flag.c run_part.h run_part.c salt.c selinux.c semanage.c \
setugid.c setupenv.c sgetgrent.c sgetpwent.c sgetspent.c \
sgroupio.c sgroupio.h shadow.c shadowio.c shadowio.h \
shadowlog.c shadowlog.h shadowlog_internal.h shadowmem.c \
shell.c sizeof.h spawn.c sssd.c sssd.h string/memset/memzero.c \
root_flag.c run_part.h run_part.c salt.c search/cmp/cmp.c \
search/cmp/cmp.h search/l/lfind.c search/l/lfind.h \
search/l/lsearch.c search/l/lsearch.h search/sort/qsort.c \
search/sort/qsort.h selinux.c semanage.c setugid.c setupenv.c \
sgetgrent.c sgetpwent.c sgetspent.c sgroupio.c sgroupio.h \
shadow.c shadow/grp/agetgroups.c shadow/grp/agetgroups.h \
shadowio.c shadowio.h shadowlog.c shadowlog.h \
shadowlog_internal.h shadowmem.c shell.c sizeof.h spawn.c \
sssd.c sssd.h string/ctype/strisascii/strisdigit.c \
string/ctype/strisascii/strisdigit.h string/memset/memzero.c \
string/memset/memzero.h string/sprintf/snprintf.c \
string/sprintf/snprintf.h string/sprintf/stpeprintf.c \
string/sprintf/stpeprintf.h string/sprintf/xasprintf.c \
string/sprintf/xasprintf.h string/strchr/strchrcnt.c \
string/strchr/strchrcnt.h string/strchr/stpspn.c \
string/strchr/stpspn.h string/strchr/strnul.c \
string/strchr/strnul.h string/strchr/strrspn.c \
string/strchr/strrspn.h string/strcmp/streq.c \
string/strchr/strchrcnt.h string/strchr/strchrscnt.c \
string/strchr/strchrscnt.h string/strchr/strnul.c \
string/strchr/strnul.h string/strcmp/strcaseeq.c \
string/strcmp/strcaseeq.h string/strcmp/streq.c \
string/strcmp/streq.h string/strcpy/stpecpy.c \
string/strcpy/stpecpy.h string/strcpy/strncat.c \
string/strcpy/strncat.h string/strcpy/strncpy.c \
@@ -172,6 +177,11 @@ am__libshadow_la_SOURCES_DIST = addgrps.c adds.c adds.h age.c \
string/strdup/strndupa.h string/strdup/xstrdup.c \
string/strdup/xstrdup.h string/strdup/xstrndup.c \
string/strdup/xstrndup.h string/strftime.c string/strftime.h \
string/strspn/stpspn.c string/strspn/stpspn.h \
string/strspn/stprcspn.c string/strspn/stprcspn.h \
string/strspn/stprspn.c string/strspn/stprspn.h \
string/strspn/strrcspn.c string/strspn/strrcspn.h \
string/strspn/strrspn.c string/strspn/strrspn.h \
string/strtok/stpsep.c string/strtok/stpsep.h strtoday.c sub.c \
subordinateio.h subordinateio.c sulog.c time/day_to_str.c \
time/day_to_str.h ttytype.c typetraits.h tz.c ulimit.c \
@@ -235,22 +245,27 @@ am_libshadow_la_OBJECTS = libshadow_la-addgrps.lo libshadow_la-adds.lo \
libshadow_la-pwd2spwd.lo libshadow_la-pwdcheck.lo \
libshadow_la-pwmem.lo libshadow_la-remove_tree.lo \
libshadow_la-root_flag.lo libshadow_la-run_part.lo \
libshadow_la-salt.lo libshadow_la-selinux.lo \
libshadow_la-salt.lo search/cmp/libshadow_la-cmp.lo \
search/l/libshadow_la-lfind.lo \
search/l/libshadow_la-lsearch.lo \
search/sort/libshadow_la-qsort.lo libshadow_la-selinux.lo \
libshadow_la-semanage.lo libshadow_la-setugid.lo \
libshadow_la-setupenv.lo libshadow_la-sgetgrent.lo \
libshadow_la-sgetpwent.lo libshadow_la-sgetspent.lo \
libshadow_la-sgroupio.lo libshadow_la-shadow.lo \
libshadow_la-shadowio.lo libshadow_la-shadowlog.lo \
libshadow_la-shadowmem.lo libshadow_la-shell.lo \
libshadow_la-spawn.lo libshadow_la-sssd.lo \
shadow/grp/libshadow_la-agetgroups.lo libshadow_la-shadowio.lo \
libshadow_la-shadowlog.lo libshadow_la-shadowmem.lo \
libshadow_la-shell.lo libshadow_la-spawn.lo \
libshadow_la-sssd.lo \
string/ctype/strisascii/libshadow_la-strisdigit.lo \
string/memset/libshadow_la-memzero.lo \
string/sprintf/libshadow_la-snprintf.lo \
string/sprintf/libshadow_la-stpeprintf.lo \
string/sprintf/libshadow_la-xasprintf.lo \
string/strchr/libshadow_la-strchrcnt.lo \
string/strchr/libshadow_la-stpspn.lo \
string/strchr/libshadow_la-strchrscnt.lo \
string/strchr/libshadow_la-strnul.lo \
string/strchr/libshadow_la-strrspn.lo \
string/strcmp/libshadow_la-strcaseeq.lo \
string/strcmp/libshadow_la-streq.lo \
string/strcpy/libshadow_la-stpecpy.lo \
string/strcpy/libshadow_la-strncat.lo \
@@ -260,6 +275,11 @@ am_libshadow_la_OBJECTS = libshadow_la-addgrps.lo libshadow_la-adds.lo \
string/strdup/libshadow_la-xstrdup.lo \
string/strdup/libshadow_la-xstrndup.lo \
string/libshadow_la-strftime.lo \
string/strspn/libshadow_la-stpspn.lo \
string/strspn/libshadow_la-stprcspn.lo \
string/strspn/libshadow_la-stprspn.lo \
string/strspn/libshadow_la-strrcspn.lo \
string/strspn/libshadow_la-strrspn.lo \
string/strtok/libshadow_la-stpsep.lo libshadow_la-strtoday.lo \
libshadow_la-sub.lo libshadow_la-subordinateio.lo \
libshadow_la-sulog.lo time/libshadow_la-day_to_str.lo \
@@ -420,15 +440,21 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \
atoi/strtoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo \
fs/readlink/$(DEPDIR)/libshadow_la-areadlink.Plo \
fs/readlink/$(DEPDIR)/libshadow_la-readlinknul.Plo \
search/cmp/$(DEPDIR)/libshadow_la-cmp.Plo \
search/l/$(DEPDIR)/libshadow_la-lfind.Plo \
search/l/$(DEPDIR)/libshadow_la-lsearch.Plo \
search/sort/$(DEPDIR)/libshadow_la-qsort.Plo \
shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Plo \
string/$(DEPDIR)/libshadow_la-strftime.Plo \
string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Plo \
string/memset/$(DEPDIR)/libshadow_la-memzero.Plo \
string/sprintf/$(DEPDIR)/libshadow_la-snprintf.Plo \
string/sprintf/$(DEPDIR)/libshadow_la-stpeprintf.Plo \
string/sprintf/$(DEPDIR)/libshadow_la-xasprintf.Plo \
string/strchr/$(DEPDIR)/libshadow_la-stpspn.Plo \
string/strchr/$(DEPDIR)/libshadow_la-strchrcnt.Plo \
string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Plo \
string/strchr/$(DEPDIR)/libshadow_la-strnul.Plo \
string/strchr/$(DEPDIR)/libshadow_la-strrspn.Plo \
string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Plo \
string/strcmp/$(DEPDIR)/libshadow_la-streq.Plo \
string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo \
string/strcpy/$(DEPDIR)/libshadow_la-strncat.Plo \
@@ -437,6 +463,11 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \
string/strdup/$(DEPDIR)/libshadow_la-strndupa.Plo \
string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo \
string/strdup/$(DEPDIR)/libshadow_la-xstrndup.Plo \
string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Plo \
string/strspn/$(DEPDIR)/libshadow_la-stprspn.Plo \
string/strspn/$(DEPDIR)/libshadow_la-stpspn.Plo \
string/strspn/$(DEPDIR)/libshadow_la-strrcspn.Plo \
string/strspn/$(DEPDIR)/libshadow_la-strrspn.Plo \
string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo \
time/$(DEPDIR)/libshadow_la-day_to_str.Plo
am__mv = mv -f
@@ -712,19 +743,24 @@ libshadow_la_SOURCES = addgrps.c adds.c adds.h age.c agetpass.c \
pam_defs.h pam_pass.c pam_pass_non_interactive.c port.c port.h \
prefix_flag.c prototypes.h pwauth.c pwauth.h pwio.c pwio.h \
pwd_init.c pwd2spwd.c pwdcheck.c pwmem.c remove_tree.c \
root_flag.c run_part.h run_part.c salt.c selinux.c semanage.c \
setugid.c setupenv.c sgetgrent.c sgetpwent.c sgetspent.c \
sgroupio.c sgroupio.h shadow.c shadowio.c shadowio.h \
shadowlog.c shadowlog.h shadowlog_internal.h shadowmem.c \
shell.c sizeof.h spawn.c sssd.c sssd.h string/memset/memzero.c \
root_flag.c run_part.h run_part.c salt.c search/cmp/cmp.c \
search/cmp/cmp.h search/l/lfind.c search/l/lfind.h \
search/l/lsearch.c search/l/lsearch.h search/sort/qsort.c \
search/sort/qsort.h selinux.c semanage.c setugid.c setupenv.c \
sgetgrent.c sgetpwent.c sgetspent.c sgroupio.c sgroupio.h \
shadow.c shadow/grp/agetgroups.c shadow/grp/agetgroups.h \
shadowio.c shadowio.h shadowlog.c shadowlog.h \
shadowlog_internal.h shadowmem.c shell.c sizeof.h spawn.c \
sssd.c sssd.h string/ctype/strisascii/strisdigit.c \
string/ctype/strisascii/strisdigit.h string/memset/memzero.c \
string/memset/memzero.h string/sprintf/snprintf.c \
string/sprintf/snprintf.h string/sprintf/stpeprintf.c \
string/sprintf/stpeprintf.h string/sprintf/xasprintf.c \
string/sprintf/xasprintf.h string/strchr/strchrcnt.c \
string/strchr/strchrcnt.h string/strchr/stpspn.c \
string/strchr/stpspn.h string/strchr/strnul.c \
string/strchr/strnul.h string/strchr/strrspn.c \
string/strchr/strrspn.h string/strcmp/streq.c \
string/strchr/strchrcnt.h string/strchr/strchrscnt.c \
string/strchr/strchrscnt.h string/strchr/strnul.c \
string/strchr/strnul.h string/strcmp/strcaseeq.c \
string/strcmp/strcaseeq.h string/strcmp/streq.c \
string/strcmp/streq.h string/strcpy/stpecpy.c \
string/strcpy/stpecpy.h string/strcpy/strncat.c \
string/strcpy/strncat.h string/strcpy/strncpy.c \
@@ -733,6 +769,11 @@ libshadow_la_SOURCES = addgrps.c adds.c adds.h age.c agetpass.c \
string/strdup/strndupa.h string/strdup/xstrdup.c \
string/strdup/xstrdup.h string/strdup/xstrndup.c \
string/strdup/xstrndup.h string/strftime.c string/strftime.h \
string/strspn/stpspn.c string/strspn/stpspn.h \
string/strspn/stprcspn.c string/strspn/stprcspn.h \
string/strspn/stprspn.c string/strspn/stprspn.h \
string/strspn/strrcspn.c string/strspn/strrcspn.h \
string/strspn/strrspn.c string/strspn/strrspn.h \
string/strtok/stpsep.c string/strtok/stpsep.h strtoday.c sub.c \
subordinateio.h subordinateio.c sulog.c time/day_to_str.c \
time/day_to_str.h ttytype.c typetraits.h tz.c ulimit.c \
@@ -883,6 +924,49 @@ fs/readlink/libshadow_la-areadlink.lo: fs/readlink/$(am__dirstamp) \
fs/readlink/$(DEPDIR)/$(am__dirstamp)
fs/readlink/libshadow_la-readlinknul.lo: fs/readlink/$(am__dirstamp) \
fs/readlink/$(DEPDIR)/$(am__dirstamp)
search/cmp/$(am__dirstamp):
@$(MKDIR_P) search/cmp
@: > search/cmp/$(am__dirstamp)
search/cmp/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) search/cmp/$(DEPDIR)
@: > search/cmp/$(DEPDIR)/$(am__dirstamp)
search/cmp/libshadow_la-cmp.lo: search/cmp/$(am__dirstamp) \
search/cmp/$(DEPDIR)/$(am__dirstamp)
search/l/$(am__dirstamp):
@$(MKDIR_P) search/l
@: > search/l/$(am__dirstamp)
search/l/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) search/l/$(DEPDIR)
@: > search/l/$(DEPDIR)/$(am__dirstamp)
search/l/libshadow_la-lfind.lo: search/l/$(am__dirstamp) \
search/l/$(DEPDIR)/$(am__dirstamp)
search/l/libshadow_la-lsearch.lo: search/l/$(am__dirstamp) \
search/l/$(DEPDIR)/$(am__dirstamp)
search/sort/$(am__dirstamp):
@$(MKDIR_P) search/sort
@: > search/sort/$(am__dirstamp)
search/sort/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) search/sort/$(DEPDIR)
@: > search/sort/$(DEPDIR)/$(am__dirstamp)
search/sort/libshadow_la-qsort.lo: search/sort/$(am__dirstamp) \
search/sort/$(DEPDIR)/$(am__dirstamp)
shadow/grp/$(am__dirstamp):
@$(MKDIR_P) shadow/grp
@: > shadow/grp/$(am__dirstamp)
shadow/grp/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) shadow/grp/$(DEPDIR)
@: > shadow/grp/$(DEPDIR)/$(am__dirstamp)
shadow/grp/libshadow_la-agetgroups.lo: shadow/grp/$(am__dirstamp) \
shadow/grp/$(DEPDIR)/$(am__dirstamp)
string/ctype/strisascii/$(am__dirstamp):
@$(MKDIR_P) string/ctype/strisascii
@: > string/ctype/strisascii/$(am__dirstamp)
string/ctype/strisascii/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) string/ctype/strisascii/$(DEPDIR)
@: > string/ctype/strisascii/$(DEPDIR)/$(am__dirstamp)
string/ctype/strisascii/libshadow_la-strisdigit.lo: \
string/ctype/strisascii/$(am__dirstamp) \
string/ctype/strisascii/$(DEPDIR)/$(am__dirstamp)
string/memset/$(am__dirstamp):
@$(MKDIR_P) string/memset
@: > string/memset/$(am__dirstamp)
@@ -915,18 +999,20 @@ string/strchr/$(DEPDIR)/$(am__dirstamp):
string/strchr/libshadow_la-strchrcnt.lo: \
string/strchr/$(am__dirstamp) \
string/strchr/$(DEPDIR)/$(am__dirstamp)
string/strchr/libshadow_la-stpspn.lo: string/strchr/$(am__dirstamp) \
string/strchr/libshadow_la-strchrscnt.lo: \
string/strchr/$(am__dirstamp) \
string/strchr/$(DEPDIR)/$(am__dirstamp)
string/strchr/libshadow_la-strnul.lo: string/strchr/$(am__dirstamp) \
string/strchr/$(DEPDIR)/$(am__dirstamp)
string/strchr/libshadow_la-strrspn.lo: string/strchr/$(am__dirstamp) \
string/strchr/$(DEPDIR)/$(am__dirstamp)
string/strcmp/$(am__dirstamp):
@$(MKDIR_P) string/strcmp
@: > string/strcmp/$(am__dirstamp)
string/strcmp/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) string/strcmp/$(DEPDIR)
@: > string/strcmp/$(DEPDIR)/$(am__dirstamp)
string/strcmp/libshadow_la-strcaseeq.lo: \
string/strcmp/$(am__dirstamp) \
string/strcmp/$(DEPDIR)/$(am__dirstamp)
string/strcmp/libshadow_la-streq.lo: string/strcmp/$(am__dirstamp) \
string/strcmp/$(DEPDIR)/$(am__dirstamp)
string/strcpy/$(am__dirstamp):
@@ -963,6 +1049,22 @@ string/$(DEPDIR)/$(am__dirstamp):
@: > string/$(DEPDIR)/$(am__dirstamp)
string/libshadow_la-strftime.lo: string/$(am__dirstamp) \
string/$(DEPDIR)/$(am__dirstamp)
string/strspn/$(am__dirstamp):
@$(MKDIR_P) string/strspn
@: > string/strspn/$(am__dirstamp)
string/strspn/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) string/strspn/$(DEPDIR)
@: > string/strspn/$(DEPDIR)/$(am__dirstamp)
string/strspn/libshadow_la-stpspn.lo: string/strspn/$(am__dirstamp) \
string/strspn/$(DEPDIR)/$(am__dirstamp)
string/strspn/libshadow_la-stprcspn.lo: string/strspn/$(am__dirstamp) \
string/strspn/$(DEPDIR)/$(am__dirstamp)
string/strspn/libshadow_la-stprspn.lo: string/strspn/$(am__dirstamp) \
string/strspn/$(DEPDIR)/$(am__dirstamp)
string/strspn/libshadow_la-strrcspn.lo: string/strspn/$(am__dirstamp) \
string/strspn/$(DEPDIR)/$(am__dirstamp)
string/strspn/libshadow_la-strrspn.lo: string/strspn/$(am__dirstamp) \
string/strspn/$(DEPDIR)/$(am__dirstamp)
string/strtok/$(am__dirstamp):
@$(MKDIR_P) string/strtok
@: > string/strtok/$(am__dirstamp)
@@ -999,8 +1101,18 @@ mostlyclean-compile:
-rm -f atoi/strtoi/*.lo
-rm -f fs/readlink/*.$(OBJEXT)
-rm -f fs/readlink/*.lo
-rm -f search/cmp/*.$(OBJEXT)
-rm -f search/cmp/*.lo
-rm -f search/l/*.$(OBJEXT)
-rm -f search/l/*.lo
-rm -f search/sort/*.$(OBJEXT)
-rm -f search/sort/*.lo
-rm -f shadow/grp/*.$(OBJEXT)
-rm -f shadow/grp/*.lo
-rm -f string/*.$(OBJEXT)
-rm -f string/*.lo
-rm -f string/ctype/strisascii/*.$(OBJEXT)
-rm -f string/ctype/strisascii/*.lo
-rm -f string/memset/*.$(OBJEXT)
-rm -f string/memset/*.lo
-rm -f string/sprintf/*.$(OBJEXT)
@@ -1013,6 +1125,8 @@ mostlyclean-compile:
-rm -f string/strcpy/*.lo
-rm -f string/strdup/*.$(OBJEXT)
-rm -f string/strdup/*.lo
-rm -f string/strspn/*.$(OBJEXT)
-rm -f string/strspn/*.lo
-rm -f string/strtok/*.$(OBJEXT)
-rm -f string/strtok/*.lo
-rm -f time/*.$(OBJEXT)
@@ -1146,15 +1260,21 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@atoi/strtoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@fs/readlink/$(DEPDIR)/libshadow_la-areadlink.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@fs/readlink/$(DEPDIR)/libshadow_la-readlinknul.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@search/cmp/$(DEPDIR)/libshadow_la-cmp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@search/l/$(DEPDIR)/libshadow_la-lfind.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@search/l/$(DEPDIR)/libshadow_la-lsearch.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@search/sort/$(DEPDIR)/libshadow_la-qsort.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/libshadow_la-strftime.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/memset/$(DEPDIR)/libshadow_la-memzero.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/sprintf/$(DEPDIR)/libshadow_la-snprintf.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/sprintf/$(DEPDIR)/libshadow_la-stpeprintf.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/sprintf/$(DEPDIR)/libshadow_la-xasprintf.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strchr/$(DEPDIR)/libshadow_la-stpspn.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strchr/$(DEPDIR)/libshadow_la-strchrcnt.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strchr/$(DEPDIR)/libshadow_la-strnul.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strchr/$(DEPDIR)/libshadow_la-strrspn.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strcmp/$(DEPDIR)/libshadow_la-streq.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strcpy/$(DEPDIR)/libshadow_la-strncat.Plo@am__quote@ # am--include-marker
@@ -1163,6 +1283,11 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@string/strdup/$(DEPDIR)/libshadow_la-strndupa.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strdup/$(DEPDIR)/libshadow_la-xstrndup.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strspn/$(DEPDIR)/libshadow_la-stprspn.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strspn/$(DEPDIR)/libshadow_la-stpspn.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strspn/$(DEPDIR)/libshadow_la-strrcspn.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strspn/$(DEPDIR)/libshadow_la-strrspn.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@time/$(DEPDIR)/libshadow_la-day_to_str.Plo@am__quote@ # am--include-marker
@@ -1798,6 +1923,34 @@ libshadow_la-salt.lo: salt.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-salt.lo `test -f 'salt.c' || echo '$(srcdir)/'`salt.c
search/cmp/libshadow_la-cmp.lo: search/cmp/cmp.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT search/cmp/libshadow_la-cmp.lo -MD -MP -MF search/cmp/$(DEPDIR)/libshadow_la-cmp.Tpo -c -o search/cmp/libshadow_la-cmp.lo `test -f 'search/cmp/cmp.c' || echo '$(srcdir)/'`search/cmp/cmp.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) search/cmp/$(DEPDIR)/libshadow_la-cmp.Tpo search/cmp/$(DEPDIR)/libshadow_la-cmp.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='search/cmp/cmp.c' object='search/cmp/libshadow_la-cmp.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o search/cmp/libshadow_la-cmp.lo `test -f 'search/cmp/cmp.c' || echo '$(srcdir)/'`search/cmp/cmp.c
search/l/libshadow_la-lfind.lo: search/l/lfind.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT search/l/libshadow_la-lfind.lo -MD -MP -MF search/l/$(DEPDIR)/libshadow_la-lfind.Tpo -c -o search/l/libshadow_la-lfind.lo `test -f 'search/l/lfind.c' || echo '$(srcdir)/'`search/l/lfind.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) search/l/$(DEPDIR)/libshadow_la-lfind.Tpo search/l/$(DEPDIR)/libshadow_la-lfind.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='search/l/lfind.c' object='search/l/libshadow_la-lfind.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o search/l/libshadow_la-lfind.lo `test -f 'search/l/lfind.c' || echo '$(srcdir)/'`search/l/lfind.c
search/l/libshadow_la-lsearch.lo: search/l/lsearch.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT search/l/libshadow_la-lsearch.lo -MD -MP -MF search/l/$(DEPDIR)/libshadow_la-lsearch.Tpo -c -o search/l/libshadow_la-lsearch.lo `test -f 'search/l/lsearch.c' || echo '$(srcdir)/'`search/l/lsearch.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) search/l/$(DEPDIR)/libshadow_la-lsearch.Tpo search/l/$(DEPDIR)/libshadow_la-lsearch.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='search/l/lsearch.c' object='search/l/libshadow_la-lsearch.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o search/l/libshadow_la-lsearch.lo `test -f 'search/l/lsearch.c' || echo '$(srcdir)/'`search/l/lsearch.c
search/sort/libshadow_la-qsort.lo: search/sort/qsort.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT search/sort/libshadow_la-qsort.lo -MD -MP -MF search/sort/$(DEPDIR)/libshadow_la-qsort.Tpo -c -o search/sort/libshadow_la-qsort.lo `test -f 'search/sort/qsort.c' || echo '$(srcdir)/'`search/sort/qsort.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) search/sort/$(DEPDIR)/libshadow_la-qsort.Tpo search/sort/$(DEPDIR)/libshadow_la-qsort.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='search/sort/qsort.c' object='search/sort/libshadow_la-qsort.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o search/sort/libshadow_la-qsort.lo `test -f 'search/sort/qsort.c' || echo '$(srcdir)/'`search/sort/qsort.c
libshadow_la-selinux.lo: selinux.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-selinux.lo -MD -MP -MF $(DEPDIR)/libshadow_la-selinux.Tpo -c -o libshadow_la-selinux.lo `test -f 'selinux.c' || echo '$(srcdir)/'`selinux.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-selinux.Tpo $(DEPDIR)/libshadow_la-selinux.Plo
@@ -1861,6 +2014,13 @@ libshadow_la-shadow.lo: shadow.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-shadow.lo `test -f 'shadow.c' || echo '$(srcdir)/'`shadow.c
shadow/grp/libshadow_la-agetgroups.lo: shadow/grp/agetgroups.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT shadow/grp/libshadow_la-agetgroups.lo -MD -MP -MF shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Tpo -c -o shadow/grp/libshadow_la-agetgroups.lo `test -f 'shadow/grp/agetgroups.c' || echo '$(srcdir)/'`shadow/grp/agetgroups.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Tpo shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadow/grp/agetgroups.c' object='shadow/grp/libshadow_la-agetgroups.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o shadow/grp/libshadow_la-agetgroups.lo `test -f 'shadow/grp/agetgroups.c' || echo '$(srcdir)/'`shadow/grp/agetgroups.c
libshadow_la-shadowio.lo: shadowio.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-shadowio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-shadowio.Tpo -c -o libshadow_la-shadowio.lo `test -f 'shadowio.c' || echo '$(srcdir)/'`shadowio.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-shadowio.Tpo $(DEPDIR)/libshadow_la-shadowio.Plo
@@ -1903,6 +2063,13 @@ libshadow_la-sssd.lo: sssd.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-sssd.lo `test -f 'sssd.c' || echo '$(srcdir)/'`sssd.c
string/ctype/strisascii/libshadow_la-strisdigit.lo: string/ctype/strisascii/strisdigit.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/ctype/strisascii/libshadow_la-strisdigit.lo -MD -MP -MF string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Tpo -c -o string/ctype/strisascii/libshadow_la-strisdigit.lo `test -f 'string/ctype/strisascii/strisdigit.c' || echo '$(srcdir)/'`string/ctype/strisascii/strisdigit.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Tpo string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/ctype/strisascii/strisdigit.c' object='string/ctype/strisascii/libshadow_la-strisdigit.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/ctype/strisascii/libshadow_la-strisdigit.lo `test -f 'string/ctype/strisascii/strisdigit.c' || echo '$(srcdir)/'`string/ctype/strisascii/strisdigit.c
string/memset/libshadow_la-memzero.lo: string/memset/memzero.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/memset/libshadow_la-memzero.lo -MD -MP -MF string/memset/$(DEPDIR)/libshadow_la-memzero.Tpo -c -o string/memset/libshadow_la-memzero.lo `test -f 'string/memset/memzero.c' || echo '$(srcdir)/'`string/memset/memzero.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/memset/$(DEPDIR)/libshadow_la-memzero.Tpo string/memset/$(DEPDIR)/libshadow_la-memzero.Plo
@@ -1938,12 +2105,12 @@ string/strchr/libshadow_la-strchrcnt.lo: string/strchr/strchrcnt.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strchr/libshadow_la-strchrcnt.lo `test -f 'string/strchr/strchrcnt.c' || echo '$(srcdir)/'`string/strchr/strchrcnt.c
string/strchr/libshadow_la-stpspn.lo: string/strchr/stpspn.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strchr/libshadow_la-stpspn.lo -MD -MP -MF string/strchr/$(DEPDIR)/libshadow_la-stpspn.Tpo -c -o string/strchr/libshadow_la-stpspn.lo `test -f 'string/strchr/stpspn.c' || echo '$(srcdir)/'`string/strchr/stpspn.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strchr/$(DEPDIR)/libshadow_la-stpspn.Tpo string/strchr/$(DEPDIR)/libshadow_la-stpspn.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strchr/stpspn.c' object='string/strchr/libshadow_la-stpspn.lo' libtool=yes @AMDEPBACKSLASH@
string/strchr/libshadow_la-strchrscnt.lo: string/strchr/strchrscnt.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strchr/libshadow_la-strchrscnt.lo -MD -MP -MF string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Tpo -c -o string/strchr/libshadow_la-strchrscnt.lo `test -f 'string/strchr/strchrscnt.c' || echo '$(srcdir)/'`string/strchr/strchrscnt.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Tpo string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strchr/strchrscnt.c' object='string/strchr/libshadow_la-strchrscnt.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strchr/libshadow_la-stpspn.lo `test -f 'string/strchr/stpspn.c' || echo '$(srcdir)/'`string/strchr/stpspn.c
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strchr/libshadow_la-strchrscnt.lo `test -f 'string/strchr/strchrscnt.c' || echo '$(srcdir)/'`string/strchr/strchrscnt.c
string/strchr/libshadow_la-strnul.lo: string/strchr/strnul.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strchr/libshadow_la-strnul.lo -MD -MP -MF string/strchr/$(DEPDIR)/libshadow_la-strnul.Tpo -c -o string/strchr/libshadow_la-strnul.lo `test -f 'string/strchr/strnul.c' || echo '$(srcdir)/'`string/strchr/strnul.c
@@ -1952,12 +2119,12 @@ string/strchr/libshadow_la-strnul.lo: string/strchr/strnul.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strchr/libshadow_la-strnul.lo `test -f 'string/strchr/strnul.c' || echo '$(srcdir)/'`string/strchr/strnul.c
string/strchr/libshadow_la-strrspn.lo: string/strchr/strrspn.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strchr/libshadow_la-strrspn.lo -MD -MP -MF string/strchr/$(DEPDIR)/libshadow_la-strrspn.Tpo -c -o string/strchr/libshadow_la-strrspn.lo `test -f 'string/strchr/strrspn.c' || echo '$(srcdir)/'`string/strchr/strrspn.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strchr/$(DEPDIR)/libshadow_la-strrspn.Tpo string/strchr/$(DEPDIR)/libshadow_la-strrspn.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strchr/strrspn.c' object='string/strchr/libshadow_la-strrspn.lo' libtool=yes @AMDEPBACKSLASH@
string/strcmp/libshadow_la-strcaseeq.lo: string/strcmp/strcaseeq.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strcmp/libshadow_la-strcaseeq.lo -MD -MP -MF string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Tpo -c -o string/strcmp/libshadow_la-strcaseeq.lo `test -f 'string/strcmp/strcaseeq.c' || echo '$(srcdir)/'`string/strcmp/strcaseeq.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Tpo string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strcmp/strcaseeq.c' object='string/strcmp/libshadow_la-strcaseeq.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strchr/libshadow_la-strrspn.lo `test -f 'string/strchr/strrspn.c' || echo '$(srcdir)/'`string/strchr/strrspn.c
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strcmp/libshadow_la-strcaseeq.lo `test -f 'string/strcmp/strcaseeq.c' || echo '$(srcdir)/'`string/strcmp/strcaseeq.c
string/strcmp/libshadow_la-streq.lo: string/strcmp/streq.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strcmp/libshadow_la-streq.lo -MD -MP -MF string/strcmp/$(DEPDIR)/libshadow_la-streq.Tpo -c -o string/strcmp/libshadow_la-streq.lo `test -f 'string/strcmp/streq.c' || echo '$(srcdir)/'`string/strcmp/streq.c
@@ -2022,6 +2189,41 @@ string/libshadow_la-strftime.lo: string/strftime.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/libshadow_la-strftime.lo `test -f 'string/strftime.c' || echo '$(srcdir)/'`string/strftime.c
string/strspn/libshadow_la-stpspn.lo: string/strspn/stpspn.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strspn/libshadow_la-stpspn.lo -MD -MP -MF string/strspn/$(DEPDIR)/libshadow_la-stpspn.Tpo -c -o string/strspn/libshadow_la-stpspn.lo `test -f 'string/strspn/stpspn.c' || echo '$(srcdir)/'`string/strspn/stpspn.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strspn/$(DEPDIR)/libshadow_la-stpspn.Tpo string/strspn/$(DEPDIR)/libshadow_la-stpspn.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strspn/stpspn.c' object='string/strspn/libshadow_la-stpspn.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strspn/libshadow_la-stpspn.lo `test -f 'string/strspn/stpspn.c' || echo '$(srcdir)/'`string/strspn/stpspn.c
string/strspn/libshadow_la-stprcspn.lo: string/strspn/stprcspn.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strspn/libshadow_la-stprcspn.lo -MD -MP -MF string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Tpo -c -o string/strspn/libshadow_la-stprcspn.lo `test -f 'string/strspn/stprcspn.c' || echo '$(srcdir)/'`string/strspn/stprcspn.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Tpo string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strspn/stprcspn.c' object='string/strspn/libshadow_la-stprcspn.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strspn/libshadow_la-stprcspn.lo `test -f 'string/strspn/stprcspn.c' || echo '$(srcdir)/'`string/strspn/stprcspn.c
string/strspn/libshadow_la-stprspn.lo: string/strspn/stprspn.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strspn/libshadow_la-stprspn.lo -MD -MP -MF string/strspn/$(DEPDIR)/libshadow_la-stprspn.Tpo -c -o string/strspn/libshadow_la-stprspn.lo `test -f 'string/strspn/stprspn.c' || echo '$(srcdir)/'`string/strspn/stprspn.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strspn/$(DEPDIR)/libshadow_la-stprspn.Tpo string/strspn/$(DEPDIR)/libshadow_la-stprspn.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strspn/stprspn.c' object='string/strspn/libshadow_la-stprspn.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strspn/libshadow_la-stprspn.lo `test -f 'string/strspn/stprspn.c' || echo '$(srcdir)/'`string/strspn/stprspn.c
string/strspn/libshadow_la-strrcspn.lo: string/strspn/strrcspn.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strspn/libshadow_la-strrcspn.lo -MD -MP -MF string/strspn/$(DEPDIR)/libshadow_la-strrcspn.Tpo -c -o string/strspn/libshadow_la-strrcspn.lo `test -f 'string/strspn/strrcspn.c' || echo '$(srcdir)/'`string/strspn/strrcspn.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strspn/$(DEPDIR)/libshadow_la-strrcspn.Tpo string/strspn/$(DEPDIR)/libshadow_la-strrcspn.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strspn/strrcspn.c' object='string/strspn/libshadow_la-strrcspn.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strspn/libshadow_la-strrcspn.lo `test -f 'string/strspn/strrcspn.c' || echo '$(srcdir)/'`string/strspn/strrcspn.c
string/strspn/libshadow_la-strrspn.lo: string/strspn/strrspn.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strspn/libshadow_la-strrspn.lo -MD -MP -MF string/strspn/$(DEPDIR)/libshadow_la-strrspn.Tpo -c -o string/strspn/libshadow_la-strrspn.lo `test -f 'string/strspn/strrspn.c' || echo '$(srcdir)/'`string/strspn/strrspn.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strspn/$(DEPDIR)/libshadow_la-strrspn.Tpo string/strspn/$(DEPDIR)/libshadow_la-strrspn.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strspn/strrspn.c' object='string/strspn/libshadow_la-strrspn.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strspn/libshadow_la-strrspn.lo `test -f 'string/strspn/strrspn.c' || echo '$(srcdir)/'`string/strspn/strrspn.c
string/strtok/libshadow_la-stpsep.lo: string/strtok/stpsep.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strtok/libshadow_la-stpsep.lo -MD -MP -MF string/strtok/$(DEPDIR)/libshadow_la-stpsep.Tpo -c -o string/strtok/libshadow_la-stpsep.lo `test -f 'string/strtok/stpsep.c' || echo '$(srcdir)/'`string/strtok/stpsep.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strtok/$(DEPDIR)/libshadow_la-stpsep.Tpo string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo
@@ -2219,13 +2421,19 @@ clean-libtool:
-rm -rf atoi/str2i/.libs atoi/str2i/_libs
-rm -rf atoi/strtoi/.libs atoi/strtoi/_libs
-rm -rf fs/readlink/.libs fs/readlink/_libs
-rm -rf search/cmp/.libs search/cmp/_libs
-rm -rf search/l/.libs search/l/_libs
-rm -rf search/sort/.libs search/sort/_libs
-rm -rf shadow/grp/.libs shadow/grp/_libs
-rm -rf string/.libs string/_libs
-rm -rf string/ctype/strisascii/.libs string/ctype/strisascii/_libs
-rm -rf string/memset/.libs string/memset/_libs
-rm -rf string/sprintf/.libs string/sprintf/_libs
-rm -rf string/strchr/.libs string/strchr/_libs
-rm -rf string/strcmp/.libs string/strcmp/_libs
-rm -rf string/strcpy/.libs string/strcpy/_libs
-rm -rf string/strdup/.libs string/strdup/_libs
-rm -rf string/strspn/.libs string/strspn/_libs
-rm -rf string/strtok/.libs string/strtok/_libs
-rm -rf time/.libs time/_libs
@@ -2357,8 +2565,18 @@ distclean-generic:
-rm -f atoi/strtoi/$(am__dirstamp)
-rm -f fs/readlink/$(DEPDIR)/$(am__dirstamp)
-rm -f fs/readlink/$(am__dirstamp)
-rm -f search/cmp/$(DEPDIR)/$(am__dirstamp)
-rm -f search/cmp/$(am__dirstamp)
-rm -f search/l/$(DEPDIR)/$(am__dirstamp)
-rm -f search/l/$(am__dirstamp)
-rm -f search/sort/$(DEPDIR)/$(am__dirstamp)
-rm -f search/sort/$(am__dirstamp)
-rm -f shadow/grp/$(DEPDIR)/$(am__dirstamp)
-rm -f shadow/grp/$(am__dirstamp)
-rm -f string/$(DEPDIR)/$(am__dirstamp)
-rm -f string/$(am__dirstamp)
-rm -f string/ctype/strisascii/$(DEPDIR)/$(am__dirstamp)
-rm -f string/ctype/strisascii/$(am__dirstamp)
-rm -f string/memset/$(DEPDIR)/$(am__dirstamp)
-rm -f string/memset/$(am__dirstamp)
-rm -f string/sprintf/$(DEPDIR)/$(am__dirstamp)
@@ -2371,6 +2589,8 @@ distclean-generic:
-rm -f string/strcpy/$(am__dirstamp)
-rm -f string/strdup/$(DEPDIR)/$(am__dirstamp)
-rm -f string/strdup/$(am__dirstamp)
-rm -f string/strspn/$(DEPDIR)/$(am__dirstamp)
-rm -f string/strspn/$(am__dirstamp)
-rm -f string/strtok/$(DEPDIR)/$(am__dirstamp)
-rm -f string/strtok/$(am__dirstamp)
-rm -f time/$(DEPDIR)/$(am__dirstamp)
@@ -2511,15 +2731,21 @@ distclean: distclean-am
-rm -f atoi/strtoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo
-rm -f fs/readlink/$(DEPDIR)/libshadow_la-areadlink.Plo
-rm -f fs/readlink/$(DEPDIR)/libshadow_la-readlinknul.Plo
-rm -f search/cmp/$(DEPDIR)/libshadow_la-cmp.Plo
-rm -f search/l/$(DEPDIR)/libshadow_la-lfind.Plo
-rm -f search/l/$(DEPDIR)/libshadow_la-lsearch.Plo
-rm -f search/sort/$(DEPDIR)/libshadow_la-qsort.Plo
-rm -f shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Plo
-rm -f string/$(DEPDIR)/libshadow_la-strftime.Plo
-rm -f string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Plo
-rm -f string/memset/$(DEPDIR)/libshadow_la-memzero.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-snprintf.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-stpeprintf.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-xasprintf.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-stpspn.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strchrcnt.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strnul.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strrspn.Plo
-rm -f string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Plo
-rm -f string/strcmp/$(DEPDIR)/libshadow_la-streq.Plo
-rm -f string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo
-rm -f string/strcpy/$(DEPDIR)/libshadow_la-strncat.Plo
@@ -2528,6 +2754,11 @@ distclean: distclean-am
-rm -f string/strdup/$(DEPDIR)/libshadow_la-strndupa.Plo
-rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo
-rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrndup.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-stprspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-stpspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-strrcspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-strrspn.Plo
-rm -f string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo
-rm -f time/$(DEPDIR)/libshadow_la-day_to_str.Plo
-rm -f Makefile
@@ -2700,15 +2931,21 @@ maintainer-clean: maintainer-clean-am
-rm -f atoi/strtoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo
-rm -f fs/readlink/$(DEPDIR)/libshadow_la-areadlink.Plo
-rm -f fs/readlink/$(DEPDIR)/libshadow_la-readlinknul.Plo
-rm -f search/cmp/$(DEPDIR)/libshadow_la-cmp.Plo
-rm -f search/l/$(DEPDIR)/libshadow_la-lfind.Plo
-rm -f search/l/$(DEPDIR)/libshadow_la-lsearch.Plo
-rm -f search/sort/$(DEPDIR)/libshadow_la-qsort.Plo
-rm -f shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Plo
-rm -f string/$(DEPDIR)/libshadow_la-strftime.Plo
-rm -f string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Plo
-rm -f string/memset/$(DEPDIR)/libshadow_la-memzero.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-snprintf.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-stpeprintf.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-xasprintf.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-stpspn.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strchrcnt.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strnul.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strrspn.Plo
-rm -f string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Plo
-rm -f string/strcmp/$(DEPDIR)/libshadow_la-streq.Plo
-rm -f string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo
-rm -f string/strcpy/$(DEPDIR)/libshadow_la-strncat.Plo
@@ -2717,6 +2954,11 @@ maintainer-clean: maintainer-clean-am
-rm -f string/strdup/$(DEPDIR)/libshadow_la-strndupa.Plo
-rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo
-rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrndup.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-stprspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-stpspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-strrcspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-strrspn.Plo
-rm -f string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo
-rm -f time/$(DEPDIR)/libshadow_la-day_to_str.Plo
-rm -f Makefile

View File

@@ -1,15 +1,14 @@
/*
* SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh
* SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz
* SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko
* SPDX-FileCopyrightText: 2007 - 2009, Nicolas François
*
* SPDX-License-Identifier: BSD-3-Clause
*/
// SPDX-FileCopyrightText: 1989-1994, Julianne Frances Haugh
// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz
// SPDX-FileCopyrightText: 2001-2006, Tomasz Kłoczko
// SPDX-FileCopyrightText: 2007-2009, Nicolas François
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
#if defined (HAVE_SETGROUPS) && ! defined (USE_PAM)
#if !defined(USE_PAM)
#include "prototypes.h"
#include "defines.h"
@@ -18,12 +17,14 @@
#include <grp.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include "alloc/malloc.h"
#include "alloc/reallocf.h"
#include "search/l/lsearch.h"
#include "shadow/grp/agetgroups.h"
#include "shadowlog.h"
#include "string/strchr/strchrscnt.h"
#ident "$Id$"
/*
* Add groups with names from LIST (separated by commas or colons)
@@ -33,48 +34,25 @@
int
add_groups(const char *list)
{
GETGROUPS_T *grouplist;
size_t i;
int ngroups;
bool added;
char *g, *p;
char buf[1024];
int ret;
char *g, *p, *dup;
FILE *shadow_logfd = log_get_logfd();
gid_t *gids;
size_t n;
if (strlen (list) >= sizeof (buf)) {
errno = EINVAL;
gids = agetgroups(&n);
if (gids == NULL)
return -1;
}
strcpy (buf, list);
i = 16;
for (;;) {
grouplist = MALLOC(i, GETGROUPS_T);
if (NULL == grouplist) {
return -1;
}
ngroups = getgroups (i, grouplist);
if ( ( (-1 == ngroups)
&& (EINVAL != errno))
|| (i > (size_t)ngroups)) {
/* Unexpected failure of getgroups or successful
* reception of the groups */
break;
}
/* not enough room, so try allocating a larger buffer */
free (grouplist);
i *= 2;
}
if (ngroups < 0) {
free (grouplist);
gids = REALLOCF(gids, n + strchrscnt(list, ",:") + 1, gid_t);
if (gids == NULL)
return -1;
}
added = false;
p = buf;
p = dup = strdup(list);
if (dup == NULL)
goto free_gids;
while (NULL != (g = strsep(&p, ",:"))) {
struct group *grp;
struct group *grp;
grp = getgrnam(g); /* local, no need for xgetgrnam */
if (NULL == grp) {
@@ -82,35 +60,22 @@ add_groups(const char *list)
continue;
}
for (i = 0; i < (size_t)ngroups && grouplist[i] != grp->gr_gid; i++);
LSEARCH(&grp->gr_gid, gids, &n);
}
free(dup);
if (i < (size_t)ngroups) {
continue;
}
if (ngroups >= sysconf (_SC_NGROUPS_MAX)) {
fputs (_("Warning: too many groups\n"), shadow_logfd);
break;
}
grouplist = REALLOCF(grouplist, (size_t) ngroups + 1, GETGROUPS_T);
if (grouplist == NULL) {
return -1;
}
grouplist[ngroups] = grp->gr_gid;
ngroups++;
added = true;
if (setgroups(n, gids) == -1) {
fprintf(shadow_logfd, "setgroups: %s\n", strerror(errno));
goto free_gids;
}
if (added) {
ret = setgroups (ngroups, grouplist);
free (grouplist);
return ret;
}
free (grouplist);
free(gids);
return 0;
}
#else /* HAVE_SETGROUPS && !USE_PAM */
extern int ISO_C_forbids_an_empty_translation_unit;
#endif /* HAVE_SETGROUPS && !USE_PAM */
free_gids:
free(gids);
return -1;
}
#else /* !USE_PAM */
extern int ISO_C_forbids_an_empty_translation_unit;
#endif /* !USE_PAM */

View File

@@ -11,5 +11,3 @@
extern inline long addsl2(long a, long b);
extern inline long addslN(size_t n, long addend[n]);
extern inline int cmpl(const void *p1, const void *p2);

View File

@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2023, Alejandro Colomar <alx@kernel.org>
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
@@ -11,8 +11,8 @@
#include <errno.h>
#include <limits.h>
#include <stddef.h>
#include <stdlib.h>
#include "search/sort/qsort.h"
#include "sizeof.h"
@@ -27,8 +27,6 @@
inline long addsl2(long a, long b);
inline long addslN(size_t n, long addend[n]);
inline int cmpl(const void *p1, const void *p2);
inline long
addsl2(long a, long b)
@@ -57,7 +55,7 @@ addslN(size_t n, long addend[n])
e = errno;
while (n > 1) {
qsort(addend, n, sizeof(addend[0]), cmpl);
QSORT(addend, n);
errno = 0;
addend[0] = addsl2(addend[0], addend[--n]);
@@ -69,18 +67,4 @@ addslN(size_t n, long addend[n])
}
inline int
cmpl(const void *p1, const void *p2)
{
const long *l1 = p1;
const long *l2 = p2;
if (*l1 < *l2)
return -1;
if (*l1 > *l2)
return +1;
return 0;
}
#endif // include guard

View File

@@ -106,7 +106,7 @@ int expire (const struct passwd *pw, /*@null@*/const struct spwd *sp)
* passwd to work just like it would had they executed
* it from the command line while logged in.
*/
#if defined(HAVE_INITGROUPS) && ! defined(USE_PAM)
#if !defined(USE_PAM)
if (setup_uid_gid (pw, false) != 0)
#else
if (setup_uid_gid (pw) != 0)

View File

@@ -5,7 +5,7 @@
#include "config.h"
#if defined(__GNUC__)
#if (__GNUC__ >= 10)
# define MAYBE_UNUSED [[gnu::unused]]
# define NORETURN [[gnu::__noreturn__]]
# define format_attr(type, fmt, va) [[gnu::format(type, fmt, va)]]

View File

@@ -1,10 +1,8 @@
/*
* SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh
* SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz
* SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko
*
* SPDX-License-Identifier: BSD-3-Clause
*/
// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh
// SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz
// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
/*
* basename.c - not worth copyrighting :-). Some versions of Linux libc
@@ -15,17 +13,19 @@
#include <config.h>
#ident "$Id$"
#include <stddef.h>
#include <stdlib.h>
#include "defines.h"
#include "prototypes.h"
/*@observer@*/const char *Basename (const char *str)
#include "string/strspn/stprcspn.h"
/*@observer@*/const char *
Basename(const char *str)
{
if (str == NULL) {
abort ();
}
char *cp = strrchr (str, '/');
return (NULL != cp) ? cp + 1 : str;
return stprcspn(str, "/");
}

View File

@@ -2,7 +2,7 @@
// SPDX-FileCopyrightText: 1996-2000, Marek Michałkiewicz
// SPDX-FileCopyrightText: 2001-2005, Tomasz Kłoczko
// SPDX-FileCopyrightText: 2005-2008, Nicolas François
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
@@ -27,15 +27,19 @@
#include <limits.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <sys/param.h>
#include <unistd.h>
#include "defines.h"
#include "chkname.h"
#include "string/ctype/strisascii/strisdigit.h"
#include "string/strcmp/streq.h"
#ifndef LOGIN_NAME_MAX
# define LOGIN_NAME_MAX 256
#endif
int allow_bad_names = false;
@@ -44,12 +48,11 @@ login_name_max_size(void)
{
long conf;
errno = 0;
conf = sysconf(_SC_LOGIN_NAME_MAX);
if (conf == -1 && errno != 0)
if (conf == -1)
return LOGIN_NAME_MAX;
return MIN(conf, PTRDIFF_MAX);
return conf;
}
@@ -69,11 +72,15 @@ is_valid_name(const char *name)
*
* Also do not allow fully numeric names or just "." or "..".
*/
int numeric;
if ('\0' == *name ||
('.' == *name && (('.' == name[1] && '\0' == name[2]) ||
'\0' == name[1])) ||
if (strisdigit(name)) {
errno = EINVAL;
return false;
}
if (streq(name, "") ||
streq(name, ".") ||
streq(name, "..") ||
!((*name >= 'a' && *name <= 'z') ||
(*name >= 'A' && *name <= 'Z') ||
(*name >= '0' && *name <= '9') ||
@@ -84,8 +91,6 @@ is_valid_name(const char *name)
return false;
}
numeric = isdigit(*name);
while (!streq(++name, "")) {
if (!((*name >= 'a' && *name <= 'z') ||
(*name >= 'A' && *name <= 'Z') ||
@@ -93,18 +98,12 @@ is_valid_name(const char *name)
*name == '_' ||
*name == '.' ||
*name == '-' ||
(*name == '$' && name[1] == '\0')
streq(name, "$")
))
{
errno = EINVAL;
return false;
}
numeric &= isdigit(*name);
}
if (numeric) {
errno = EINVAL;
return false;
}
return true;

View File

@@ -891,7 +891,7 @@ static int write_all (const struct commonio_db *db)
int commonio_close (struct commonio_db *db)
{
int errors = 0;
bool errors = false;
char buf[1024];
struct stat sb;
@@ -932,25 +932,25 @@ int commonio_close (struct commonio_db *db)
#ifdef WITH_SELINUX
if (set_selinux_file_context (db->filename, S_IFREG) != 0) {
errors++;
errors = true;
}
#endif
if (create_backup (buf, db->fp) != 0) {
errors++;
errors = true;
}
if (fclose (db->fp) != 0) {
errors++;
errors = true;
}
db->fp = NULL;
#ifdef WITH_SELINUX
if (reset_selinux_file_context () != 0) {
errors++;
errors = true;
}
#endif
if (errors != 0)
if (errors)
goto fail;
} else {
/*
@@ -966,7 +966,7 @@ int commonio_close (struct commonio_db *db)
#ifdef WITH_SELINUX
if (set_selinux_file_context (db->filename, S_IFREG) != 0) {
errors++;
errors = true;
}
#endif
@@ -976,24 +976,24 @@ int commonio_close (struct commonio_db *db)
}
if (write_all (db) != 0) {
errors++;
errors = true;
}
if (fflush (db->fp) != 0) {
errors++;
errors = true;
}
if (fsync (fileno (db->fp)) != 0) {
errors++;
errors = true;
}
if (fclose (db->fp) != 0) {
errors++;
errors = true;
}
db->fp = NULL;
if (errors != 0) {
if (errors) {
unlink (buf);
goto fail;
}
@@ -1011,11 +1011,11 @@ int commonio_close (struct commonio_db *db)
nscd_need_reload = true;
goto success;
fail:
errors++;
errors = true;
success:
free_linked_list (db);
return errors == 0;
return !errors;
}
static /*@dependent@*/ /*@null@*/struct commonio_entry *next_entry_by_name (

View File

@@ -10,8 +10,8 @@
#include <stdint.h>
#include <stdlib.h>
#include <unistd.h>
#if HAVE_SYS_RANDOM_H
#include <sys/random.h>
#if __has_include(<sys/random.h>)
# include <sys/random.h>
#endif
#include "bit.h"

View File

@@ -41,7 +41,7 @@
* crypt(3), crypt_gensalt(3), and their
* feature test macros may be defined in here.
*/
#if HAVE_CRYPT_H
#if __has_include(<crypt.h>)
# include <crypt.h>
#endif
@@ -50,13 +50,8 @@
#include <dirent.h>
/*
* Possible cases:
* - /usr/include/shadow.h exists and includes the shadow group stuff.
* - /usr/include/shadow.h exists, but we use our own gshadow.h.
*/
#include <shadow.h>
#if defined(SHADOWGRP) && !defined(GSHADOW)
#if defined(SHADOWGRP)
#include "gshadow_.h"
#endif

View File

@@ -65,7 +65,8 @@
(void) fprintf (shadow_logfd,
_("crypt method not supported by libcrypt? (%s)\n"),
method);
exit (EXIT_FAILURE);
errno = EINVAL;
return NULL;
}
if (strlen (cp) != 13) {

View File

@@ -16,9 +16,9 @@
#include <stdio.h>
#include "prototypes.h"
#include "string/strchr/stpspn.h"
#include "string/strchr/strrspn.h"
#include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
#include "string/strspn/stprspn.h"
#include "string/strtok/stpsep.h"
@@ -93,7 +93,7 @@ change_field(char *buf, size_t maxsize, const char *prompt)
* makes it possible to change the field to empty, by
* entering a space. --marekm
*/
stpcpy(strrspn(newf, " \t"), "");
stpcpy(stprspn(newf, " \t"), "");
cp = stpspn(newf, " \t");
strcpy (buf, cp);
}

View File

@@ -101,8 +101,8 @@
#include "attr.h"
#include "getdate.h"
#include "string/strchr/stpspn.h"
#include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
/* Some old versions of bison generate parsers that use bcopy.

View File

@@ -31,8 +31,8 @@
#include "attr.h"
#include "getdate.h"
#include "string/strchr/stpspn.h"
#include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
/* Some old versions of bison generate parsers that use bcopy.

View File

@@ -30,9 +30,10 @@
#include "prototypes.h"
#include "shadowlog_internal.h"
#include "string/sprintf/xasprintf.h"
#include "string/strchr/stpspn.h"
#include "string/strchr/strrspn.h"
#include "string/strcmp/strcaseeq.h"
#include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
#include "string/strspn/stprspn.h"
#include "string/strtok/stpsep.h"
@@ -226,7 +227,7 @@ bool getdef_bool (const char *item)
return false;
}
return (strcasecmp (d->value, "yes") == 0);
return strcaseeq(d->value, "yes");
}
@@ -561,7 +562,7 @@ static void def_load (void)
/*
* Trim trailing whitespace.
*/
stpcpy(strrspn(buf, " \t\n"), "");
stpcpy(stprspn(buf, " \t\n"), "");
/*
* Break the line into two fields.

View File

@@ -9,8 +9,7 @@
#include <config.h>
/* Newer versions of Linux libc already have shadow support. */
#if defined(SHADOWGRP) && !defined(HAVE_SHADOWGRP) /*{ */
#if defined(SHADOWGRP) && !__has_include(<gshadow.h>)
#ident "$Id$"
@@ -55,7 +54,7 @@ void setsgent (void)
if (NULL != shadow) {
rewind (shadow);
} else {
shadow = fopen (SGROUP_FILE, "r");
shadow = fopen (SGROUP_FILE, "re");
}
}
@@ -107,7 +106,7 @@ sgetsgent(const char *string)
if (NULL != cp || i != FIELDS)
return NULL;
sgroup.sg_name = fields[0];
sgroup.sg_namp = fields[0];
sgroup.sg_passwd = fields[1];
free(sgroup.sg_adm);
@@ -193,7 +192,7 @@ sgetsgent(const char *string)
setsgent ();
while ((sgrp = getsgent ()) != NULL) {
if (streq(name, sgrp->sg_name)) {
if (streq(name, sgrp->sg_namp)) {
break;
}
}
@@ -219,7 +218,7 @@ int putsgent (const struct sgrp *sgrp, FILE * fp)
}
/* calculate the required buffer size */
size = strlen (sgrp->sg_name) + strlen (sgrp->sg_passwd) + 10;
size = strlen (sgrp->sg_namp) + strlen (sgrp->sg_passwd) + 10;
for (i = 0; (NULL != sgrp->sg_adm) && (NULL != sgrp->sg_adm[i]); i++) {
size += strlen (sgrp->sg_adm[i]) + 1;
}
@@ -236,7 +235,7 @@ int putsgent (const struct sgrp *sgrp, FILE * fp)
/*
* Copy the group name and passwd.
*/
cp = stpcpy(stpcpy(cp, sgrp->sg_name), ":");
cp = stpcpy(stpcpy(cp, sgrp->sg_namp), ":");
cp = stpcpy(stpcpy(cp, sgrp->sg_passwd), ":");
/*
@@ -276,4 +275,4 @@ int putsgent (const struct sgrp *sgrp, FILE * fp)
}
#else
extern int ISO_C_forbids_an_empty_translation_unit;
#endif /*} SHADOWGRP */
#endif // !SHADOWGRP

View File

@@ -1,24 +1,24 @@
/*
* SPDX-FileCopyrightText: 1988 - 1994, Julianne Frances Haugh
* SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz
* SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko
*
* SPDX-License-Identifier: BSD-3-Clause
*/
// SPDX-FileCopyrightText: 1988-1994, Julianne Frances Haugh
// SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz
// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
/*
* $Id$
*/
#ifndef _H_GSHADOW
#define _H_GSHADOW
#ifndef SHADOW_INCLUDE_LIB_GSHADOW__H_
#define SHADOW_INCLUDE_LIB_GSHADOW__H_
#if __has_include(<gshadow.h>)
# include <gshadow.h>
#else
/*
* Shadow group security file structure
*/
struct sgrp {
char *sg_name; /* group name */
char *sg_namp; /* group name */
char *sg_passwd; /* group password */
char **sg_adm; /* group administrator list */
char **sg_mem; /* group membership list */
@@ -39,4 +39,7 @@ void endsgent (void);
int putsgent (const struct sgrp *, FILE *);
#define GSHADOW "/etc/gshadow"
#endif /* ifndef _H_GSHADOW */
#endif // !__has_include(<gshadow.h>)
#endif // include guard

View File

@@ -12,9 +12,9 @@
#include <stdlib.h>
#include <stdio.h>
#include <strings.h>
#if HAVE_SYS_CAPABILITY_H
#include <sys/prctl.h>
#include <sys/capability.h>
#if __has_include(<sys/capability.h>)
# include <sys/capability.h>
#endif
#include "alloc/calloc.h"
@@ -86,7 +86,7 @@ get_map_ranges(int ranges, int argc, char **argv)
*/
#define ULONG_DIGITS (((WIDTHOF(unsigned long) + 9)/10)*3)
#if HAVE_SYS_CAPABILITY_H
#if __has_include(<sys/capability.h>)
static inline bool maps_lower_root(int cap, int ranges, const struct map_range *mappings)
{
int idx;
@@ -129,7 +129,7 @@ void write_mapping(int proc_dir_fd, int ranges, const struct map_range *mappings
char *buf, *pos, *end;
int fd;
#if HAVE_SYS_CAPABILITY_H
#if __has_include(<sys/capability.h>)
int cap;
struct __user_cap_header_struct hdr = {_LINUX_CAPABILITY_VERSION_3, 0};
struct __user_cap_data_struct data[2] = {{0}};

View File

@@ -36,8 +36,8 @@
#include "atoi/str2i/str2s.h"
#include "atoi/str2i/str2u.h"
#include "string/memset/memzero.h"
#include "string/strchr/stpspn.h"
#include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
#include "typetraits.h"

View File

@@ -20,8 +20,8 @@
#include "getdef.h"
#include "prototypes.h"
#include "string/memset/memzero.h"
#include "string/strchr/stpspn.h"
#include "string/strcpy/strtcpy.h"
#include "string/strspn/stpspn.h"
#include "string/strtok/stpsep.h"

View File

@@ -17,7 +17,6 @@
#include "defines.h"
#include "getdef.h"
#include "prototypes.h"
#include "string/strdup/xstrdup.h"
/*
@@ -27,7 +26,7 @@
* it to the user's terminal at login time. The MOTD_FILE configuration
* option is a colon-delimited list of filenames.
*/
void
int
motd(void)
{
FILE *fp;
@@ -37,24 +36,26 @@ motd(void)
int c;
motdfile = getdef_str ("MOTD_FILE");
if (NULL == motdfile) {
return;
}
if (NULL == motdfile)
return 0;
motdlist = xstrdup (motdfile);
motdlist = strdup(motdfile);
if (motdlist == NULL)
return -1;
mb = motdlist;
while (NULL != (motdfile = strsep(&mb, ":"))) {
fp = fopen (motdfile, "r");
if (NULL != fp) {
while ((c = getc (fp)) != EOF) {
putchar (c);
}
fclose (fp);
if (fp == NULL)
continue;
while ((c = getc(fp)) != EOF) {
putchar(c);
}
fclose(fp);
}
fflush (stdout);
free (motdlist);
return 0;
}

View File

@@ -15,8 +15,8 @@
#include "shadowlog_internal.h"
#include "shadowlog.h"
#include "string/sprintf/snprintf.h"
#include "string/strchr/stpspn.h"
#include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
#include "string/strtok/stpsep.h"

View File

@@ -6,11 +6,12 @@
*/
#include <config.h>
#include <security/pam_appl.h>
#ifdef HAVE_SECURITY_PAM_MISC_H
#if __has_include(<security/pam_misc.h>)
# include <security/pam_misc.h>
#endif
#ifdef HAVE_SECURITY_OPENPAM_H
#if __has_include(<security/openpam.h>)
# include <security/openpam.h>
#endif

View File

@@ -36,7 +36,7 @@
#include "commonio.h"
/* addgrps.c */
#if defined (HAVE_SETGROUPS) && ! defined (USE_PAM)
#if !defined(USE_PAM)
extern int add_groups (const char *);
#endif
@@ -222,7 +222,7 @@ extern void login_prompt (char *, int);
extern void mailcheck (void);
/* motd.c */
extern void motd (void);
extern int motd(void);
/* myname.c */
extern /*@null@*//*@only@*/struct passwd *get_my_pwent (void);
@@ -384,7 +384,7 @@ extern int del_seuser(const char *login_name);
/* setugid.c */
extern int setup_groups (const struct passwd *info);
extern int change_uid (const struct passwd *info);
#if (defined HAVE_INITGROUPS) && (! defined USE_PAM)
#if !defined(USE_PAM)
extern int setup_uid_gid (const struct passwd *info, bool is_console);
#else
extern int setup_uid_gid (const struct passwd *info);

View File

@@ -48,16 +48,15 @@ static const char *PROMPT = gettext_noop ("%s's Password: ");
* compared.
*/
int pw_auth (const char *cipher,
const char *user,
int reason,
/*@null@*/const char *input)
int
pw_auth(const char *cipher, const char *user)
{
int retval;
char prompt[1024];
char *clear = NULL;
char *clear;
const char *cp;
const char *encrypted;
const char *input;
#ifdef SKEY
bool use_skey = false;
@@ -65,35 +64,6 @@ int pw_auth (const char *cipher,
struct skey skey;
#endif
/*
* There are programs for adding and deleting authentication data.
*/
if ((PW_ADD == reason) || (PW_DELETE == reason)) {
return 0;
}
/*
* There are even programs for changing the user name ...
*/
if ((PW_CHANGE == reason) && (NULL != input)) {
return 0;
}
/*
* WARNING:
*
* When we change a password and we are root, we don't prompt.
* This is so root can change any password without having to
* know it. This is a policy decision that might have to be
* revisited.
*/
if ((PW_CHANGE == reason) && (getuid () == 0)) {
return 0;
}
/*
* WARNING:
*
@@ -128,25 +98,22 @@ int pw_auth (const char *cipher,
#endif
/*
* Prompt for the password as required. FTPD and REXECD both
* get the cleartext password for us.
* Prompt for the password as required.
*/
if ((PW_FTP != reason) && (PW_REXEC != reason) && (NULL == input)) {
cp = getdef_str ("LOGIN_STRING");
if (NULL == cp) {
cp = _(PROMPT);
}
cp = getdef_str ("LOGIN_STRING");
if (NULL == cp) {
cp = _(PROMPT);
}
#ifdef SKEY
if (use_skey) {
printf ("[%s]\n", challenge_info);
}
if (use_skey) {
printf ("[%s]\n", challenge_info);
}
#endif
SNPRINTF(prompt, cp, user);
clear = agetpass(prompt);
input = (clear == NULL) ? "" : clear;
}
SNPRINTF(prompt, cp, user);
clear = agetpass(prompt);
input = (clear == NULL) ? "" : clear;
/*
* Convert the cleartext password into a ciphertext string.

View File

@@ -7,42 +7,11 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
/*
* $Id$
*/
#ifndef _PWAUTH_H
#define _PWAUTH_H
#ifndef USE_PAM
int pw_auth (const char *cipher,
const char *user,
int flag,
/*@null@*/const char *input);
int pw_auth(const char *cipher, const char *user);
#endif /* !USE_PAM */
/*
* Local access
*/
#define PW_SU 1
#define PW_LOGIN 2
/*
* Administrative functions
*/
#define PW_ADD 101
#define PW_CHANGE 102
#define PW_DELETE 103
/*
* Network access
*/
#define PW_TELNET 201
#define PW_RLOGIN 202
#define PW_FTP 203
#define PW_REXEC 204
#endif /* _PWAUTH_H */

View File

@@ -28,7 +28,7 @@ void passwd_check (const char *user, const char *passwd, MAYBE_UNUSED const char
if (NULL != sp) {
passwd = sp->sp_pwdp;
}
if (pw_auth (passwd, user, PW_LOGIN, NULL) != 0) {
if (pw_auth(passwd, user) != 0) {
SYSLOG ((LOG_WARN, "incorrect password for `%s'", user));
(void) sleep (1);
fprintf (log_get_logfd(), _("Incorrect password for %s.\n"), user);

View File

@@ -32,7 +32,7 @@ static int run_part(char *script_path, const char *name, const char *action)
setenv("SUBJECT",name,1);
execv(script_path,args);
fprintf(shadow_logfd, "execv: %s\n", strerror(errno));
exit(1);
_exit(1);
}
pid_status = wait(&wait_status);

13
lib/search/cmp/cmp.c Normal file
View File

@@ -0,0 +1,13 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
#include "search/cmp/cmp.h"
extern inline int cmp_int(const void *key, const void *elt);
extern inline int cmp_long(const void *key, const void *elt);
extern inline int cmp_uint(const void *key, const void *elt);
extern inline int cmp_ulong(const void *key, const void *elt);

86
lib/search/cmp/cmp.h Normal file
View File

@@ -0,0 +1,86 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_SEARCH_CMP_CMP_H_
#define SHADOW_INCLUDE_LIB_SEARCH_CMP_CMP_H_
#include <config.h>
#define CMP(TYPE) \
( \
_Generic((TYPE) 0, \
int *: cmp_int, \
long *: cmp_long, \
unsigned int *: cmp_uint, \
unsigned long *: cmp_ulong \
) \
)
/* Compatible with bsearch(3), lfind(3), and qsort(3). */
inline int cmp_int(const void *key, const void *elt);
inline int cmp_long(const void *key, const void *elt);
inline int cmp_uint(const void *key, const void *elt);
inline int cmp_ulong(const void *key, const void *elt);
inline int
cmp_int(const void *key, const void *elt)
{
const int *k = key;
const int *e = elt;
if (*k < *e)
return -1;
if (*k > *e)
return +1;
return 0;
}
inline int
cmp_long(const void *key, const void *elt)
{
const long *k = key;
const long *e = elt;
if (*k < *e)
return -1;
if (*k > *e)
return +1;
return 0;
}
inline int
cmp_uint(const void *key, const void *elt)
{
const unsigned int *k = key;
const unsigned int *e = elt;
if (*k < *e)
return -1;
if (*k > *e)
return +1;
return 0;
}
inline int
cmp_ulong(const void *key, const void *elt)
{
const unsigned long *k = key;
const unsigned long *e = elt;
if (*k < *e)
return -1;
if (*k > *e)
return +1;
return 0;
}
#endif // include guard

13
lib/search/l/lfind.c Normal file
View File

@@ -0,0 +1,13 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
#include "search/l/lfind.h"
#include <stddef.h>
extern inline void *lfind_(const void *k, const void *a, size_t n, size_t ksize,
typeof(int (const void *k, const void *elt)) *cmp);

44
lib/search/l/lfind.h Normal file
View File

@@ -0,0 +1,44 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_SEARCH_L_LFIND_H_
#define SHADOW_INCLUDE_LIB_SEARCH_L_LFIND_H_
#include <config.h>
#include <search.h>
#include <stddef.h>
#include "must_be.h"
#include "search/cmp/cmp.h"
#include <assert.h>
#define LFIND(k, a, n) \
({ \
__auto_type k_ = k; \
__auto_type a_ = a; \
\
static_assert(is_same_typeof(k_, a_), ""); \
\
(typeof(k_)) lfind_(k_, a_, n, sizeof(*k_), CMP(typeof(k_))); \
})
inline void *lfind_(const void *k, const void *a, size_t n, size_t ksize,
typeof(int (const void *k, const void *elt)) *cmp);
inline void *
lfind_(const void *k, const void *a, size_t n, size_t ksize,
typeof(int (const void *k, const void *elt)) *cmp)
{
// lfind(3) wants a pointer to n for historic reasons.
return lfind(k, a, &n, ksize, cmp);
}
#endif // include guard

View File

@@ -4,7 +4,4 @@
#include <config.h>
#include "string/strchr/strrspn.h"
extern inline char *strrspn(char *restrict s, const char *restrict accept);
#include "search/l/lsearch.h"

30
lib/search/l/lsearch.h Normal file
View File

@@ -0,0 +1,30 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_SEARCH_L_LSEARCH_H_
#define SHADOW_INCLUDE_LIB_SEARCH_L_LSEARCH_H_
#include <config.h>
#include <search.h>
#include "must_be.h"
#include "search/cmp/cmp.h"
#include <assert.h>
#define LSEARCH(k, a, n) \
({ \
__auto_type k_ = k; \
__auto_type a_ = a; \
\
static_assert(is_same_typeof(k_, a_), ""); \
\
(typeof(k_)) lsearch(k_, a_, n, sizeof(*k_), CMP(typeof(k_)));\
})
#endif // include guard

7
lib/search/sort/qsort.c Normal file
View File

@@ -0,0 +1,7 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
#include "search/sort/qsort.h"

25
lib/search/sort/qsort.h Normal file
View File

@@ -0,0 +1,25 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_SEARCH_SORT_QSORT_H_
#define SHADOW_INCLUDE_LIB_SEARCH_SORT_QSORT_H_
#include <config.h>
#include <stdlib.h>
#include "must_be.h"
#include "search/cmp/cmp.h"
#define QSORT(a, n) do \
{ \
__auto_type p_ = a; \
\
qsort(p_, n, sizeof(*p_), CMP(typeof(p_))); \
} while (0)
#endif // include guard

View File

@@ -47,7 +47,7 @@ int setup_groups (const struct passwd *info)
closelog ();
return -1;
}
#ifdef HAVE_INITGROUPS
/*
* For systems which support multiple concurrent groups, go get
* the group set from the /etc/group file.
@@ -60,7 +60,7 @@ int setup_groups (const struct passwd *info)
closelog ();
return -1;
}
#endif
return 0;
}
@@ -96,7 +96,7 @@ int change_uid (const struct passwd *info)
* Returns 0 on success, or -1 on failure.
*/
#if defined (HAVE_INITGROUPS) && ! (defined USE_PAM)
#if !defined(USE_PAM)
int setup_uid_gid (const struct passwd *info, bool is_console)
#else
int setup_uid_gid (const struct passwd *info)
@@ -106,7 +106,7 @@ int setup_uid_gid (const struct passwd *info)
return -1;
}
#if defined (HAVE_INITGROUPS) && ! defined (USE_PAM)
#if !defined(USE_PAM)
if (is_console) {
const char *cp = getdef_str ("CONSOLE_GROUPS");
@@ -114,7 +114,7 @@ int setup_uid_gid (const struct passwd *info)
perror ("Warning: add_groups");
}
}
#endif /* HAVE_INITGROUPS && !USE_PAM*/
#endif // !USE_PAM
if (change_uid (info) < 0) {
return -1;

View File

@@ -27,9 +27,9 @@
#include "getdef.h"
#include "shadowlog.h"
#include "string/sprintf/xasprintf.h"
#include "string/strchr/stpspn.h"
#include "string/strcmp/streq.h"
#include "string/strdup/xstrdup.h"
#include "string/strspn/stpspn.h"
#include "string/strtok/stpsep.h"

View File

@@ -36,9 +36,9 @@
/* Do the same as the other _dup function, even if we know the
* structure. */
/*@-mustfreeonly@*/
sg->sg_name = strdup (sgent->sg_name);
sg->sg_namp = strdup (sgent->sg_namp);
/*@=mustfreeonly@*/
if (NULL == sg->sg_name) {
if (NULL == sg->sg_namp) {
free (sg);
return NULL;
}
@@ -46,7 +46,7 @@
sg->sg_passwd = strdup (sgent->sg_passwd);
/*@=mustfreeonly@*/
if (NULL == sg->sg_passwd) {
free (sg->sg_name);
free (sg->sg_namp);
free (sg);
return NULL;
}
@@ -57,7 +57,7 @@
/*@=mustfreeonly@*/
if (NULL == sg->sg_adm) {
free (sg->sg_passwd);
free (sg->sg_name);
free (sg->sg_namp);
free (sg);
return NULL;
}
@@ -69,7 +69,7 @@
}
free (sg->sg_adm);
free (sg->sg_passwd);
free (sg->sg_name);
free (sg->sg_namp);
free (sg);
return NULL;
}
@@ -86,7 +86,7 @@
}
free (sg->sg_adm);
free (sg->sg_passwd);
free (sg->sg_name);
free (sg->sg_namp);
free (sg);
return NULL;
}
@@ -102,7 +102,7 @@
}
free (sg->sg_adm);
free (sg->sg_passwd);
free (sg->sg_name);
free (sg->sg_namp);
free (sg);
return NULL;
}
@@ -131,7 +131,7 @@ void
sgr_free(/*@only@*/struct sgrp *sgent)
{
size_t i;
free (sgent->sg_name);
free (sgent->sg_namp);
if (NULL != sgent->sg_passwd)
free(strzero(sgent->sg_passwd));
@@ -150,7 +150,7 @@ static const char *gshadow_getname (const void *ent)
{
const struct sgrp *gr = ent;
return gr->sg_name;
return gr->sg_namp;
}
static void *gshadow_parse (const char *line)
@@ -163,7 +163,7 @@ static int gshadow_put (const void *ent, FILE * file)
const struct sgrp *sg = ent;
if ( (NULL == sg)
|| (valid_field (sg->sg_name, ":\n") == -1)
|| (valid_field (sg->sg_namp, ":\n") == -1)
|| (valid_field (sg->sg_passwd, ":\n") == -1)) {
return -1;
}

View File

@@ -41,7 +41,7 @@ void setspent (void)
if (NULL != shadow) {
rewind (shadow);
}else {
shadow = fopen (SHADOW_FILE, "r");
shadow = fopen (SHADOW_FILE, "re");
}
}

View File

@@ -0,0 +1,13 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
#include "shadow/grp/agetgroups.h"
#include <stddef.h>
#include <sys/types.h>
extern inline gid_t *agetgroups(size_t *ngids);

View File

@@ -0,0 +1,52 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_SHADOW_GRP_AGETGROUPS_H_
#define SHADOW_INCLUDE_LIB_SHADOW_GRP_AGETGROUPS_H_
#include <config.h>
#include <stddef.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include "alloc/malloc.h"
#include "attr.h"
ATTR_ACCESS(write_only, 1)
ATTR_MALLOC(free)
inline gid_t *agetgroups(size_t *ngids);
// Like getgroups(3), but allocate the buffer.
// *ngids is used to return the number of elements in the allocated array.
inline gid_t *
agetgroups(size_t *ngids)
{
int n;
gid_t *gids;
n = getgroups(0, NULL);
if (n == -1)
return NULL;
gids = MALLOC(n, gid_t);
if (gids == NULL)
return NULL;
n = getgroups(n, gids);
if (n == -1) {
free(gids);
return NULL;
}
*ngids = n;
return gids;
}
#endif // include guard

View File

@@ -35,11 +35,11 @@ run_command(const char *cmd, const char *argv[],
(void) execve (cmd, (char * const *) argv,
(char * const *) envp);
if (ENOENT == errno) {
exit (E_CMD_NOTFOUND);
_exit (E_CMD_NOTFOUND);
}
fprintf (shadow_logfd, "%s: cannot execute %s: %s\n",
shadow_progname, cmd, strerror (errno));
exit (E_CMD_NOEXEC);
_exit (E_CMD_NOEXEC);
} else if ((pid_t)-1 == pid) {
fprintf (shadow_logfd, "%s: cannot execute %s: %s\n",
shadow_progname, cmd, strerror (errno));

View File

@@ -0,0 +1,12 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
#include "string/ctype/strisascii/strisdigit.h"
#include <stdbool.h>
extern inline bool strisdigit(const char *s);

View File

@@ -0,0 +1,32 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_STRING_CTYPE_STRISASCII_STRISDIGIT_H_
#define SHADOW_INCLUDE_LIB_STRING_CTYPE_STRISASCII_STRISDIGIT_H_
#include <config.h>
#include <stdbool.h>
#include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
inline bool strisdigit(const char *s);
// string is [:digit:]
// Like isdigit(3), but check all characters in the string.
inline bool
strisdigit(const char *s)
{
if (streq(s, ""))
return false;
return streq(stpspn(s, "0123456789"), "");
}
#endif // include guard

View File

@@ -18,6 +18,7 @@ ATTR_STRING(1)
inline size_t strchrcnt(const char *s, char c);
// string character count
inline size_t
strchrcnt(const char *s, char c)
{

View File

@@ -0,0 +1,12 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
#include "string/strchr/strchrscnt.h"
#include <stddef.h>
extern inline size_t strchrscnt(const char *s, const char *c);

View File

@@ -0,0 +1,37 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_STRING_STRCHR_STRCHRSCNT_H_
#define SHADOW_INCLUDE_LIB_STRING_STRCHR_STRCHRSCNT_H_
#include <config.h>
#include <stddef.h>
#include "attr.h"
#include "string/strchr/strchrcnt.h"
#include "string/strcmp/streq.h"
ATTR_STRING(1)
ATTR_STRING(2)
inline size_t strchrscnt(const char *s, const char *c);
// string characters count
// Similar to strchrcnt(), but search for multiple characters.
inline size_t
strchrscnt(const char *s, const char *c)
{
size_t n = 0;
for (; !streq(c, ""); c++)
n += strchrcnt(s, *c);
return n;
}
#endif // include guard

View File

@@ -13,6 +13,7 @@
#include "attr.h"
// string null-byte
// Similar to strlen(3), but return a pointer instead of an offset.
#define strnul(s) \
({ \

View File

@@ -1,38 +0,0 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_STRING_STRCHR_STRRSPN_H_
#define SHADOW_INCLUDE_LIB_STRING_STRCHR_STRRSPN_H_
#include <config.h>
#include <string.h>
#include "attr.h"
#include "string/strchr/strnul.h"
ATTR_STRING(2)
inline char *strrspn(char *restrict s, const char *restrict accept);
// Available in Oracle Solaris: strrspn(3GEN).
// <https://docs.oracle.com/cd/E36784_01/html/E36877/strrspn-3gen.html>
inline char *
strrspn(char *restrict s, const char *restrict accept)
{
char *p;
p = strnul(s);
while (p > s) {
p--;
if (strchr(accept, *p) == NULL)
return p + 1;
}
return s;
}
#endif // include guard

View File

@@ -0,0 +1,12 @@
// SPDX-FileCopyrightText: 2024-2025, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
#include <stdbool.h>
#include "string/strcmp/strcaseeq.h"
extern inline bool strcaseeq(const char *s1, const char *s2);

View File

@@ -0,0 +1,30 @@
// SPDX-FileCopyrightText: 2024-2025, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_STRING_STRCMP_STRCASEEQ_H_
#define SHADOW_INCLUDE_LIB_STRING_STRCMP_STRCASEEQ_H_
#include <config.h>
#include <stdbool.h>
#include <strings.h>
#include "attr.h"
ATTR_STRING(1) ATTR_STRING(2)
inline bool strcaseeq(const char *s1, const char *s2);
// strings case-insensitive equal
// streq(), but case-insensitive.
inline bool
strcaseeq(const char *s1, const char *s2)
{
return strcasecmp(s1, s2) == 0;
}
#endif // include guard

View File

@@ -19,6 +19,7 @@ ATTR_STRING(2)
inline bool streq(const char *s1, const char *s2);
// strings equal
/* Return true if s1 and s2 compare equal. */
inline bool
streq(const char *s1, const char *s2)

View File

@@ -13,6 +13,7 @@
#include "sizeof.h"
// string format time
#define STRFTIME(dst, fmt, tm) strftime(dst, NITEMS(dst), fmt, tm)

View File

@@ -0,0 +1,7 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
#include "string/strspn/stprcspn.h"

View File

@@ -0,0 +1,25 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_STRING_STRSPN_STPRCSPN_H_
#define SHADOW_INCLUDE_LIB_STRING_STRSPN_STPRCSPN_H_
#include <config.h>
#include <string.h>
#include "string/strspn/strrcspn.h"
// string returns-pointer rear complement substring prefix length
#define stprcspn(s, reject) \
({ \
__auto_type s_ = (s); \
\
s_ + strrcspn(s_, reject); \
})
#endif // include guard

View File

@@ -0,0 +1,7 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
#include "string/strspn/stprspn.h"

View File

@@ -0,0 +1,27 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_STRING_STRSPN_STPRSPN_H_
#define SHADOW_INCLUDE_LIB_STRING_STRSPN_STPRSPN_H_
#include <config.h>
#include <string.h>
#include "string/strspn/strrspn.h"
// string returns-pointer rear substring prefix length
// Available in Oracle Solaris as strrspn(3GEN).
// <https://docs.oracle.com/cd/E36784_01/html/E36877/strrspn-3gen.html>
#define stprspn(s, accept) \
({ \
__auto_type s_ = (s); \
\
s_ + strrspn_(s_, accept); \
})
#endif // include guard

View File

@@ -4,4 +4,4 @@
#include <config.h>
#include "string/strchr/stpspn.h"
#include "string/strspn/stpspn.h"

View File

@@ -2,8 +2,8 @@
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_STRING_STRCHR_STPSPN_H_
#define SHADOW_INCLUDE_LIB_STRING_STRCHR_STPSPN_H_
#ifndef SHADOW_INCLUDE_LIB_STRING_STRSPN_STPSPN_H_
#define SHADOW_INCLUDE_LIB_STRING_STRSPN_STPSPN_H_
#include <config.h>
@@ -13,6 +13,7 @@
#include "attr.h"
// string returns-pointer substring prefix length
// Similar to strspn(3), but return a pointer instead of an offset.
// Similar to strchrnul(3), but search for any bytes not in 'accept'.
#define stpspn(s, accept) \

View File

@@ -0,0 +1,12 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
#include "string/strspn/strrcspn.h"
#include <stddef.h>
extern inline size_t strrcspn(const char *s, const char *reject);

View File

@@ -0,0 +1,39 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_STRING_STRSPN_STRRCSPN_H_
#define SHADOW_INCLUDE_LIB_STRING_STRSPN_STRRCSPN_H_
#include <config.h>
#include <stddef.h>
#include <string.h>
#include "attr.h"
#include "string/strchr/strnul.h"
ATTR_STRING(1)
ATTR_STRING(2)
inline size_t strrcspn(const char *s, const char *reject);
// string rear complement substring prefix length
inline size_t
strrcspn(const char *s, const char *reject)
{
char *p;
p = strnul(s);
while (p > s) {
p--;
if (strchr(reject, *p) != NULL)
return p + 1 - s;
}
return 0;
}
#endif // include guard

View File

@@ -0,0 +1,12 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
#include "string/strspn/strrspn.h"
#include <stddef.h>
extern inline size_t strrspn_(const char *s, const char *accept);

View File

@@ -0,0 +1,39 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_STRING_STRSPN_STRRSPN_H_
#define SHADOW_INCLUDE_LIB_STRING_STRSPN_STRRSPN_H_
#include <config.h>
#include <stddef.h>
#include <string.h>
#include "attr.h"
#include "string/strchr/strnul.h"
ATTR_STRING(1)
ATTR_STRING(2)
inline size_t strrspn_(const char *s, const char *accept);
// string rear substring prefix length
inline size_t
strrspn_(const char *s, const char *accept)
{
char *p;
p = strnul(s);
while (p > s) {
p--;
if (strchr(accept, *p) == NULL)
return p + 1 - s;
}
return 0;
}
#endif // include guard

View File

@@ -17,6 +17,7 @@ ATTR_STRING(1) ATTR_STRING(2)
inline char *stpsep(char *s, const char *delim);
// string returns-pointer separate
// Similar to strsep(3),
// but return the next token, and don't update the input pointer.
// Similar to strtok(3),

View File

@@ -14,8 +14,9 @@
#include "atoi/str2i/str2s.h"
#include "getdate.h"
#include "prototypes.h"
#include "string/strchr/stpspn.h"
#include "string/ctype/strisascii/strisdigit.h"
#include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
/*
@@ -35,7 +36,6 @@
long strtoday (const char *str)
{
time_t t;
bool isnum = true;
const char *s = str;
/*
@@ -54,14 +54,9 @@ long strtoday (const char *str)
s++;
}
s = stpspn(s, " ");
while (isnum && !streq(s, "")) {
if (!isdigit (*s)) {
isnum = false;
}
s++;
}
if (isnum) {
if (strisdigit(s)) {
long retdate;
if (str2sl(&retdate, str) == -1)
return -2;
return retdate;

View File

@@ -22,6 +22,7 @@
#include "alloc/realloc.h"
#include "alloc/reallocf.h"
#include "atoi/str2i/str2u.h"
#include "string/ctype/strisascii/strisdigit.h"
#include "string/sprintf/snprintf.h"
#include "string/strcmp/streq.h"
@@ -926,22 +927,12 @@ out:
return count;
}
static bool all_digits(const char *str)
{
int i;
for (i = 0; str[i] != '\0'; i++)
if (!isdigit(str[i]))
return false;
return true;
}
static int append_uids(uid_t **uids, const char *owner, int n)
{
int i;
uid_t owner_uid;
if (all_digits(owner)) {
if (strisdigit(owner)) {
i = sscanf(owner, "%d", &owner_uid);
if (i != 1) {
// should not happen

View File

@@ -39,7 +39,6 @@ man_MANS = \
man1/sg.1 \
man3/shadow.3 \
man5/shadow.5 \
man5/suauth.5 \
man8/useradd.8 \
man8/userdel.8 \
man8/usermod.8 \
@@ -57,6 +56,7 @@ man_nopam = \
if WITH_SU
man_MANS += man1/su.1
man_nopam += man5/suauth.5
endif
if !USE_PAM

View File

@@ -89,11 +89,12 @@ build_triplet = @build@
host_triplet = @host@
@ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8
@WITH_SU_TRUE@am__append_2 = man1/su.1
@USE_PAM_FALSE@am__append_3 = $(man_nopam)
@ENABLE_SUBIDS_TRUE@am__append_4 = $(man_subids)
@ENABLE_LASTLOG_TRUE@am__append_5 = lastlog.8.xml
@USE_PAM_TRUE@am__append_6 = $(man_nopam)
@ENABLE_SUBIDS_FALSE@am__append_7 = $(man_subids)
@WITH_SU_TRUE@am__append_3 = man5/suauth.5
@USE_PAM_FALSE@am__append_4 = $(man_nopam)
@ENABLE_SUBIDS_TRUE@am__append_5 = $(man_subids)
@ENABLE_LASTLOG_TRUE@am__append_6 = lastlog.8.xml
@USE_PAM_TRUE@am__append_7 = $(man_nopam)
@ENABLE_SUBIDS_FALSE@am__append_8 = $(man_subids)
subdir = man
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
@@ -418,14 +419,11 @@ man_MANS = man1/chage.1 man1/chfn.1 man8/chgpasswd.8 man8/chpasswd.8 \
man8/logoutd.8 man1/newgrp.1 man8/newusers.8 man8/nologin.8 \
man1/passwd.1 man5/passwd.5 man8/pwck.8 man8/pwconv.8 \
man8/pwunconv.8 man1/sg.1 man3/shadow.3 man5/shadow.5 \
man5/suauth.5 man8/useradd.8 man8/userdel.8 man8/usermod.8 \
man8/vigr.8 man8/vipw.8 $(am__append_1) $(am__append_2) \
$(am__append_3) $(am__append_4)
man_nopam = \
man5/limits.5 \
man5/login.access.5 \
man5/porttime.5
man8/useradd.8 man8/userdel.8 man8/usermod.8 man8/vigr.8 \
man8/vipw.8 $(am__append_1) $(am__append_2) $(am__append_4) \
$(am__append_5)
man_nopam = man5/limits.5 man5/login.access.5 man5/porttime.5 \
$(am__append_3)
man_subids = \
man1/getsubids.1 \
man1/newgidmap.1 \
@@ -443,7 +441,7 @@ man_XMANS = chage.1.xml chfn.1.xml chgpasswd.8.xml chpasswd.8.xml \
porttime.5.xml pwck.8.xml pwconv.8.xml shadow.3.xml \
shadow.5.xml sg.1.xml su.1.xml suauth.5.xml subgid.5.xml \
subuid.5.xml useradd.8.xml userdel.8.xml usermod.8.xml \
vipw.8.xml $(am__append_5)
vipw.8.xml $(am__append_6)
login_defs_v = \
BCRYPT_MIN_ROUNDS.xml \
CHFN_AUTH.xml \
@@ -518,7 +516,7 @@ login_defs_v = \
EXTRA_DIST = $(man_MANS) $(man_XMANS) config.xml $(addprefix \
login.defs.d/,$(login_defs_v)) man8/sulogin.8 sulogin.8.xml \
generate_mans.mak generate_translations.mak its.rules \
shadow-man.xsl $(am__append_6) $(am__append_7)
shadow-man.xsl $(am__append_7) $(am__append_8)
@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_FALSE@VENDORDIR_COND = without_vendordir
@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_TRUE@VENDORDIR_COND = with_vendordir
@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@PAM_COND = no_pam

View File

@@ -208,8 +208,7 @@
found under the directory <replaceable>PREFIX_DIR</replaceable>.
This option does not chroot and is intended for preparing a cross-compilation
target. Some limitations: NIS and LDAP users/groups are
not verified. PAM authentication is using the host files.
No SELINUX support.
not verified. No SELINUX support.
</para>
</listitem>
</varlistentry>

View File

@@ -1,2 +1,2 @@
<!ENTITY GROUP_NAME_MAX_LENGTH '32'>
<!ENTITY SHADOW_UTILS_VERSION '4.17.1'>
<!ENTITY SHADOW_UTILS_VERSION '4.17.3'>

View File

@@ -2,12 +2,12 @@
.\" Title: chfn
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024
.\" Date: 24/02/2025
.\" Manual: User Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: Danish
.\"
.TH "CHFN" "1" "31/12/2024" "shadow\-utils 4\&.17\&.1" "User Commands"
.TH "CHFN" "1" "24/02/2025" "shadow\-utils 4\&.17\&.3" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: newgrp
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024
.\" Date: 24/02/2025
.\" Manual: User Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: Danish
.\"
.TH "NEWGRP" "1" "31/12/2024" "shadow\-utils 4\&.17\&.1" "User Commands"
.TH "NEWGRP" "1" "24/02/2025" "shadow\-utils 4\&.17\&.3" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: sg
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024
.\" Date: 24/02/2025
.\" Manual: User Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: Danish
.\"
.TH "SG" "1" "31/12/2024" "shadow\-utils 4\&.17\&.1" "User Commands"
.TH "SG" "1" "24/02/2025" "shadow\-utils 4\&.17\&.3" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: gshadow
.\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net>
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024
.\" Date: 24/02/2025
.\" Manual: File Formats and Configuration Files
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: Danish
.\"
.TH "GSHADOW" "5" "31/12/2024" "shadow\-utils 4\&.17\&.1" "File Formats and Configuration"
.TH "GSHADOW" "5" "24/02/2025" "shadow\-utils 4\&.17\&.3" "File Formats and Configuration"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: groupdel
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024
.\" Date: 24/02/2025
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: Danish
.\"
.TH "GROUPDEL" "8" "31/12/2024" "shadow\-utils 4\&.17\&.1" "System Management Commands"
.TH "GROUPDEL" "8" "24/02/2025" "shadow\-utils 4\&.17\&.3" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: logoutd
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024
.\" Date: 24/02/2025
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: Danish
.\"
.TH "LOGOUTD" "8" "31/12/2024" "shadow\-utils 4\&.17\&.1" "System Management Commands"
.TH "LOGOUTD" "8" "24/02/2025" "shadow\-utils 4\&.17\&.3" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: nologin
.\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net>
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024
.\" Date: 24/02/2025
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: Danish
.\"
.TH "NOLOGIN" "8" "31/12/2024" "shadow\-utils 4\&.17\&.1" "System Management Commands"
.TH "NOLOGIN" "8" "24/02/2025" "shadow\-utils 4\&.17\&.3" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: vipw
.\" Author: Marek Micha\(/lkiewicz
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024
.\" Date: 24/02/2025
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: Danish
.\"
.TH "VIPW" "8" "31/12/2024" "shadow\-utils 4\&.17\&.1" "System Management Commands"
.TH "VIPW" "8" "24/02/2025" "shadow\-utils 4\&.17\&.3" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: chage
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024
.\" Date: 24.02.2025
.\" Manual: User Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: German
.\"
.TH "CHAGE" "1" "31.12.2024" "shadow\-utils 4\&.17\&.1" "User Commands"
.TH "CHAGE" "1" "24.02.2025" "shadow\-utils 4\&.17\&.3" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -139,7 +139,7 @@ directory\&. Only absolute paths are supported\&.
\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR
.RS 4
Apply changes to configuration files under the root filesystem found under the directory
\fIPREFIX_DIR\fR\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. PAM authentication is using the host files\&. No SELINUX support\&.
\fIPREFIX_DIR\fR\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. No SELINUX support\&.
.RE
.PP
\fB\-W\fR, \fB\-\-warndays\fR\ \&\fIWARN_DAYS\fR

View File

@@ -2,12 +2,12 @@
.\" Title: chfn
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024
.\" Date: 24.02.2025
.\" Manual: User Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: German
.\"
.TH "CHFN" "1" "31.12.2024" "shadow\-utils 4\&.17\&.1" "User Commands"
.TH "CHFN" "1" "24.02.2025" "shadow\-utils 4\&.17\&.3" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: chsh
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024
.\" Date: 24.02.2025
.\" Manual: User Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: German
.\"
.TH "CHSH" "1" "31.12.2024" "shadow\-utils 4\&.17\&.1" "User Commands"
.TH "CHSH" "1" "24.02.2025" "shadow\-utils 4\&.17\&.3" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: expiry
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024
.\" Date: 24.02.2025
.\" Manual: User Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: German
.\"
.TH "EXPIRY" "1" "31.12.2024" "shadow\-utils 4\&.17\&.1" "User Commands"
.TH "EXPIRY" "1" "24.02.2025" "shadow\-utils 4\&.17\&.3" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: gpasswd
.\" Author: Rafal Maszkowski
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024
.\" Date: 24.02.2025
.\" Manual: User Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: German
.\"
.TH "GPASSWD" "1" "31.12.2024" "shadow\-utils 4\&.17\&.1" "User Commands"
.TH "GPASSWD" "1" "24.02.2025" "shadow\-utils 4\&.17\&.3" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: login
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024
.\" Date: 24.02.2025
.\" Manual: User Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: German
.\"
.TH "LOGIN" "1" "31.12.2024" "shadow\-utils 4\&.17\&.1" "User Commands"
.TH "LOGIN" "1" "24.02.2025" "shadow\-utils 4\&.17\&.3" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: newgrp
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024
.\" Date: 24.02.2025
.\" Manual: User Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: German
.\"
.TH "NEWGRP" "1" "31.12.2024" "shadow\-utils 4\&.17\&.1" "User Commands"
.TH "NEWGRP" "1" "24.02.2025" "shadow\-utils 4\&.17\&.3" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: passwd
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024
.\" Date: 24.02.2025
.\" Manual: User Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: German
.\"
.TH "PASSWD" "1" "31.12.2024" "shadow\-utils 4\&.17\&.1" "User Commands"
.TH "PASSWD" "1" "24.02.2025" "shadow\-utils 4\&.17\&.3" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -63,7 +63,7 @@ Die unbedachte Auswahl von oder der sorglose Umgang mit ihnen macht Passw\(:orte
.PP
As a general guideline, passwords should be long and random\&. It\*(Aqs fine to use simple character sets, such as passwords consisting only of lowercase letters, if that helps memorizing longer passwords\&. For a password consisting only of lowercase English letters randomly chosen, and a length of 32, there are 26^32 (approximately 2^150) different possible combinations\&. Being an exponential equation, it\*(Aqs apparent that the exponent (the length) is more important than the base (the size of the character set)\&.
.PP
Ratschl\(:age, wie Sie ein sicheres Passwort w\(:ahlen, finden Sie unter http://de\&.wikipedia\&.org/wiki/Passwort#Wahl_von_sicheren_Passw%C3%B6rter \&.
You can find advice on how to choose a strong password on https://en\&.wikipedia\&.org/wiki/Password_strength
.SH "OPTIONEN"
.PP
The options which apply to the
@@ -145,7 +145,7 @@ directory\&. Only absolute paths are supported\&.
\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR
.RS 4
Apply changes to configuration files under the root filesystem found under the directory
\fIPREFIX_DIR\fR\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. PAM authentication is using the host files\&. No SELINUX support\&.
\fIPREFIX_DIR\fR\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. No PAM support\&. No SELINUX support\&.
.RE
.PP
\fB\-S\fR, \fB\-\-status\fR

View File

@@ -2,12 +2,12 @@
.\" Title: sg
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024
.\" Date: 24.02.2025
.\" Manual: User Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: German
.\"
.TH "SG" "1" "31.12.2024" "shadow\-utils 4\&.17\&.1" "User Commands"
.TH "SG" "1" "24.02.2025" "shadow\-utils 4\&.17\&.3" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: su
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024
.\" Date: 24.02.2025
.\" Manual: User Commands
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: German
.\"
.TH "SU" "1" "31.12.2024" "shadow\-utils 4\&.17\&.1" "User Commands"
.TH "SU" "1" "24.02.2025" "shadow\-utils 4\&.17\&.3" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: shadow
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024
.\" Date: 24.02.2025
.\" Manual: Library Calls
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: German
.\"
.TH "SHADOW" "3" "31.12.2024" "shadow\-utils 4\&.17\&.1" "Library Calls"
.TH "SHADOW" "3" "24.02.2025" "shadow\-utils 4\&.17\&.3" "Library Calls"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: faillog
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024
.\" Date: 24.02.2025
.\" Manual: File Formats and Configuration Files
.\" Source: shadow-utils 4.17.1
.\" Source: shadow-utils 4.17.3
.\" Language: German
.\"
.TH "FAILLOG" "5" "31.12.2024" "shadow\-utils 4\&.17\&.1" "File Formats and Configuratio"
.TH "FAILLOG" "5" "24.02.2025" "shadow\-utils 4\&.17\&.3" "File Formats and Configuratio"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

Some files were not shown because too many files have changed in this diff Show More