Compare commits

...
Author SHA1 Message Date
Chris Hofstaedtler a9c3448878 New upstream version 4.17.4 2025-03-29 13:24:20 +01:00
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
561 changed files with 26545 additions and 6202 deletions
-55
View File
@@ -20,10 +20,6 @@
/* Path for faillog file. */ /* Path for faillog file. */
#undef 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 */ /* max group name length */
#undef GROUP_NAME_MAX_LENGTH #undef GROUP_NAME_MAX_LENGTH
@@ -53,9 +49,6 @@
the CoreFoundation framework. */ the CoreFoundation framework. */
#undef HAVE_CFPREFERENCESCOPYAPPVALUE #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. /* Define if the GNU dcgettext() function is already present or preinstalled.
*/ */
#undef HAVE_DCGETTEXT #undef HAVE_DCGETTEXT
@@ -119,24 +112,15 @@
/* Define to 1 if you have the `getusershell' function. */ /* Define to 1 if you have the `getusershell' function. */
#undef HAVE_GETUSERSHELL #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. */ /* Define if you have the iconv() function and it works. */
#undef HAVE_ICONV #undef HAVE_ICONV
/* Define to 1 if you have the `initgroups' function. */
#undef HAVE_INITGROUPS
/* Define to 1 if you have the `innetgr' function. */ /* Define to 1 if you have the `innetgr' function. */
#undef HAVE_INNETGR #undef HAVE_INNETGR
/* Define to 1 if you have the <inttypes.h> header file. */ /* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H #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. */ /* Define to 1 if you have the `lckpwdf' function. */
#undef HAVE_LCKPWDF #undef HAVE_LCKPWDF
@@ -164,9 +148,6 @@
/* Define to 1 if you have the <minix/config.h> header file. */ /* Define to 1 if you have the <minix/config.h> header file. */
#undef HAVE_MINIX_CONFIG_H #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. */ /* Define to 1 if you have the `putgrent' function. */
#undef HAVE_PUTGRENT #undef HAVE_PUTGRENT
@@ -179,9 +160,6 @@
/* Define to 1 if you have the <readpassphrase.h> header file. */ /* Define to 1 if you have the <readpassphrase.h> header file. */
#undef HAVE_READPASSPHRASE_H #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. */ /* Define to 1 if you have the `rpmatch' function. */
#undef HAVE_RPMATCH #undef HAVE_RPMATCH
@@ -197,9 +175,6 @@
/* Define to 1 if you have the <semanage/semanage.h> header file. */ /* Define to 1 if you have the <semanage/semanage.h> header file. */
#undef HAVE_SEMANAGE_SEMANAGE_H #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. */ /* Define to 1 if you have the `sgetgrent' function. */
#undef HAVE_SGETGRENT #undef HAVE_SGETGRENT
@@ -209,12 +184,6 @@
/* Define to 1 if you have the `sgetspent' function. */ /* Define to 1 if you have the `sgetspent' function. */
#undef HAVE_SGETSPENT #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. */ /* Define if you have the shl_load function. */
#undef HAVE_SHL_LOAD #undef HAVE_SHL_LOAD
@@ -260,15 +229,6 @@
/* Define to 1 if `ut_xtime' is a member of `struct utmpx'. */ /* Define to 1 if `ut_xtime' is a member of `struct utmpx'. */
#undef HAVE_STRUCT_UTMPX_UT_XTIME #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. */ /* Define to 1 if you have the <sys/statfs.h> header file. */
#undef HAVE_SYS_STATFS_H #undef HAVE_SYS_STATFS_H
@@ -281,9 +241,6 @@
/* Define to 1 if you have the <tcb.h> header file. */ /* Define to 1 if you have the <tcb.h> header file. */
#undef HAVE_TCB_H #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. */ /* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H #undef HAVE_UNISTD_H
@@ -296,9 +253,6 @@
/* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */ /* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */
#undef HAVE_UTIME_NULL #undef HAVE_UTIME_NULL
/* Define to 1 if you have the <utmp.h> header file. */
#undef HAVE_UTMP_H
/* Define to support vendor settings. */ /* Define to support vendor settings. */
#undef HAVE_VENDORDIR #undef HAVE_VENDORDIR
@@ -512,14 +466,5 @@
/* Define for large files, on AIX-style hosts. */ /* Define for large files, on AIX-style hosts. */
#undef _LARGE_FILES #undef _LARGE_FILES
/* Path for utmp file. */
#undef _UTMP_FILE
/* Path for wtmp file. */ /* Path for wtmp file. */
#undef _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
Vendored
+186 -471
View File
@@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # 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.4.
# #
# Report bugs to <pkg-shadow-devel@lists.alioth.debian.org>. # Report bugs to <pkg-shadow-devel@lists.alioth.debian.org>.
# #
@@ -621,8 +621,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='shadow' PACKAGE_NAME='shadow'
PACKAGE_TARNAME='shadow' PACKAGE_TARNAME='shadow'
PACKAGE_VERSION='4.17.1' PACKAGE_VERSION='4.17.4'
PACKAGE_STRING='shadow 4.17.1' PACKAGE_STRING='shadow 4.17.4'
PACKAGE_BUGREPORT='pkg-shadow-devel@lists.alioth.debian.org' PACKAGE_BUGREPORT='pkg-shadow-devel@lists.alioth.debian.org'
PACKAGE_URL='https://github.com/shadow-maint/shadow' PACKAGE_URL='https://github.com/shadow-maint/shadow'
@@ -671,6 +671,7 @@ INTLLIBS
LTLIBICONV LTLIBICONV
LIBICONV LIBICONV
INTL_MACOSX_LIBS INTL_MACOSX_LIBS
CPP
XGETTEXT_EXTRA_OPTIONS XGETTEXT_EXTRA_OPTIONS
MSGMERGE MSGMERGE
XGETTEXT_015 XGETTEXT_015
@@ -744,7 +745,6 @@ USE_SHA_CRYPT_FALSE
USE_SHA_CRYPT_TRUE USE_SHA_CRYPT_TRUE
GROUP_NAME_MAX_LENGTH GROUP_NAME_MAX_LENGTH
LIBOBJS LIBOBJS
CPP
LIBADD_DL LIBADD_DL
LT_DLPREOPEN LT_DLPREOPEN
LIBADD_DLD_LINK LIBADD_DLD_LINK
@@ -932,14 +932,14 @@ CPPFLAGS
YACC YACC
YFLAGS YFLAGS
LT_SYS_LIBRARY_PATH LT_SYS_LIBRARY_PATH
CPP
PKG_CONFIG PKG_CONFIG
PKG_CONFIG_PATH PKG_CONFIG_PATH
PKG_CONFIG_LIBDIR PKG_CONFIG_LIBDIR
CMOCKA_CFLAGS CMOCKA_CFLAGS
CMOCKA_LIBS CMOCKA_LIBS
LIBBSD_CFLAGS LIBBSD_CFLAGS
LIBBSD_LIBS' LIBBSD_LIBS
CPP'
# Initialize some variables set by options. # 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. # 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. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures shadow 4.17.1 to adapt to many kinds of systems. \`configure' configures shadow 4.17.4 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1559,7 +1559,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of shadow 4.17.1:";; short | recursive ) echo "Configuration of shadow 4.17.4:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@@ -1657,7 +1657,6 @@ Some influential environment variables:
default value of `-d' given by some make applications. default value of `-d' given by some make applications.
LT_SYS_LIBRARY_PATH LT_SYS_LIBRARY_PATH
User-defined run-time library search path. User-defined run-time library search path.
CPP C preprocessor
PKG_CONFIG path to pkg-config utility PKG_CONFIG path to pkg-config utility
PKG_CONFIG_PATH PKG_CONFIG_PATH
directories to add to pkg-config's search path directories to add to pkg-config's search path
@@ -1669,6 +1668,7 @@ Some influential environment variables:
LIBBSD_CFLAGS LIBBSD_CFLAGS
C compiler flags for LIBBSD, overriding pkg-config C compiler flags for LIBBSD, overriding pkg-config
LIBBSD_LIBS linker 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 Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations. it to find libraries and programs with nonstandard names/locations.
@@ -1738,7 +1738,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
shadow configure 4.17.1 shadow configure 4.17.4
generated by GNU Autoconf 2.71 generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc. 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_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 # ac_fn_c_try_run LINENO
# ---------------------- # ----------------------
# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that # 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 as_fn_set_status $ac_retval
} # ac_fn_c_compute_int } # 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= ac_configure_args_raw=
for ac_arg for ac_arg
do do
@@ -2338,7 +2338,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. 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.4, which was
generated by GNU Autoconf 2.71. Invocation command line was generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw $ $0$ac_configure_args_raw
@@ -3611,7 +3611,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='shadow' PACKAGE='shadow'
VERSION='4.17.1' VERSION='4.17.4'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h 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" 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 if test "x$ac_cv_header_shadow_h" = xyes
then : then :
@@ -14830,12 +14744,6 @@ if test "x$ac_cv_func_getusershell" = xyes
then : then :
printf "%s\n" "#define HAVE_GETUSERSHELL 1" >>confdefs.h 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 fi
ac_fn_c_check_func "$LINENO" "lckpwdf" "ac_cv_func_lckpwdf" ac_fn_c_check_func "$LINENO" "lckpwdf" "ac_cv_func_lckpwdf"
if test "x$ac_cv_func_lckpwdf" = xyes if test "x$ac_cv_func_lckpwdf" = xyes
@@ -14848,12 +14756,6 @@ if test "x$ac_cv_func_lutimes" = xyes
then : then :
printf "%s\n" "#define HAVE_LUTIMES 1" >>confdefs.h 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 fi
ac_fn_c_check_func "$LINENO" "updwtmpx" "ac_cv_func_updwtmpx" ac_fn_c_check_func "$LINENO" "updwtmpx" "ac_cv_func_updwtmpx"
if test "x$ac_cv_func_updwtmpx" = xyes 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 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 { 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 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\n" "$as_me:${as_lineno-$LINENO}: checking location of shared mail directory" >&5
printf %s "checking location of shared mail directory... " >&6; } printf %s "checking location of shared mail directory... " >&6; }
if test ${shadow_cv_maildir+y} if test ${shadow_cv_maildir+y}
@@ -15649,28 +15267,6 @@ printf "%s\n" "#define MAIL_SPOOL_FILE \"$shadow_cv_mailfile\"" >>confdefs.h
fi fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking location of utmp" >&5
printf %s "checking location of utmp... " >&6; }
if test ${shadow_cv_utmpdir+y}
then :
printf %s "(cached) " >&6
else $as_nop
for shadow_cv_utmpdir in /var/run /var/adm /usr/adm /etc none; do
if test -f $shadow_cv_utmpdir/utmp; then
break
fi
done
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $shadow_cv_utmpdir" >&5
printf "%s\n" "$shadow_cv_utmpdir" >&6; }
if test "$shadow_cv_utmpdir" = "none"; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: utmp file not found" >&5
printf "%s\n" "$as_me: WARNING: utmp file not found" >&2;}
fi
printf "%s\n" "#define _UTMP_FILE \"$shadow_cv_utmpdir/utmp\"" >>confdefs.h
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking location of faillog/lastlog/wtmp" >&5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking location of faillog/lastlog/wtmp" >&5
printf %s "checking location of faillog/lastlog/wtmp... " >&6; } printf %s "checking location of faillog/lastlog/wtmp... " >&6; }
if test ${shadow_cv_logdir+y} if test ${shadow_cv_logdir+y}
@@ -15695,22 +15291,8 @@ printf "%s\n" "#define LASTLOG_FILE \"$shadow_cv_logdir/lastlog\"" >>confdefs.h
printf "%s\n" "#define FAILLOG_FILE \"$shadow_cv_logdir/faillog\"" >>confdefs.h printf "%s\n" "#define FAILLOG_FILE \"$shadow_cv_logdir/faillog\"" >>confdefs.h
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking location of the passwd program" >&5
printf %s "checking location of the passwd program... " >&6; }
if test ${shadow_cv_passwd_dir+y}
then :
printf %s "(cached) " >&6
else $as_nop
if test -f /usr/bin/passwd; then
shadow_cv_passwd_dir=/usr/bin
else
shadow_cv_passwd_dir=/bin
fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $shadow_cv_passwd_dir" >&5
printf "%s\n" "$shadow_cv_passwd_dir" >&6; }
printf "%s\n" "#define PASSWD_PROGRAM \"$shadow_cv_passwd_dir/passwd\"" >>confdefs.h printf "%s\n" "#define PASSWD_PROGRAM \"$exec_prefix/bin/passwd\"" >>confdefs.h
# Check whether --enable-shadowgrp was given. # Check whether --enable-shadowgrp was given.
@@ -18612,6 +18194,139 @@ else $as_nop
fi 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 acl_libdirstem=lib
@@ -20846,7 +20561,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" 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.4, which was
generated by GNU Autoconf 2.71. Invocation command line was generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@@ -20915,7 +20630,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped' ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\ ac_cs_version="\\
shadow config.status 4.17.1 shadow config.status 4.17.4
configured by $0, generated by GNU Autoconf 2.71, configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"
+4 -57
View File
@@ -4,7 +4,7 @@ m4_define([libsubid_abi_major], 5)
m4_define([libsubid_abi_minor], 0) m4_define([libsubid_abi_minor], 0)
m4_define([libsubid_abi_micro], 0) m4_define([libsubid_abi_micro], 0)
m4_define([libsubid_abi], [libsubid_abi_major.libsubid_abi_minor.libsubid_abi_micro]) 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.4], [pkg-shadow-devel@lists.alioth.debian.org], [],
[https://github.com/shadow-maint/shadow]) [https://github.com/shadow-maint/shadow])
AM_INIT_AUTOMAKE([1.11 foreign dist-xz subdir-objects tar-pax]) AM_INIT_AUTOMAKE([1.11 foreign dist-xz subdir-objects tar-pax])
AC_CONFIG_MACRO_DIRS([m4]) AC_CONFIG_MACRO_DIRS([m4])
@@ -36,20 +36,13 @@ LT_LIB_DLLOAD
dnl Checks for libraries. 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 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_HEADER([shadow.h],,[AC_MSG_ERROR([You need a libc with shadow.h])])
AC_CHECK_FUNCS(arc4random_buf futimes \ AC_CHECK_FUNCS(arc4random_buf futimes \
getentropy getrandom getspnam getusershell \ getentropy getrandom getspnam getusershell \
initgroups lckpwdf lutimes \ lckpwdf lutimes \
setgroups updwtmpx innetgr \ updwtmpx innetgr \
getspnam_r \ getspnam_r \
rpmatch \ rpmatch \
memset_explicit explicit_bzero stpecpy stpeprintf) memset_explicit explicit_bzero stpecpy stpeprintf)
@@ -66,7 +59,6 @@ AC_CHECK_MEMBERS([struct utmpx.ut_name,
struct utmpx.ut_xtime],,,[[#include <utmpx.h>]]) struct utmpx.ut_xtime],,,[[#include <utmpx.h>]])
dnl Checks for library functions. dnl Checks for library functions.
AC_TYPE_GETGROUPS
AC_FUNC_UTIME_NULL AC_FUNC_UTIME_NULL
AC_REPLACE_FUNCS(putgrent putpwent putspent) AC_REPLACE_FUNCS(putgrent putpwent putspent)
AC_REPLACE_FUNCS(sgetgrent sgetpwent sgetspent) AC_REPLACE_FUNCS(sgetgrent sgetpwent sgetspent)
@@ -76,33 +68,6 @@ AC_CHECK_FUNC(secure_getenv, [AC_DEFINE(HAS_SECURE_GETENV,
1, 1,
[Defined to 1 if you have the declaration of 'secure_getenv'])]) [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, 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 [for shadow_cv_maildir in /var/mail /var/spool/mail /usr/spool/mail /usr/mail none; do
if test -d $shadow_cv_maildir; then if test -d $shadow_cv_maildir; then
@@ -125,18 +90,6 @@ if test $shadow_cv_mailfile != none; then
[Name of user's mail spool file if stored in user's home directory.]) [Name of user's mail spool file if stored in user's home directory.])
fi fi
AC_CACHE_CHECK([location of utmp], shadow_cv_utmpdir,
[for shadow_cv_utmpdir in /var/run /var/adm /usr/adm /etc none; do
if test -f $shadow_cv_utmpdir/utmp; then
break
fi
done])
if test "$shadow_cv_utmpdir" = "none"; then
AC_MSG_WARN(utmp file not found)
fi
AC_DEFINE_UNQUOTED(_UTMP_FILE, "$shadow_cv_utmpdir/utmp",
[Path for utmp file.])
AC_CACHE_CHECK([location of faillog/lastlog/wtmp], shadow_cv_logdir, AC_CACHE_CHECK([location of faillog/lastlog/wtmp], shadow_cv_logdir,
[for shadow_cv_logdir in /var/log /var/adm /usr/adm /etc; do [for shadow_cv_logdir in /var/log /var/adm /usr/adm /etc; do
if test -d $shadow_cv_logdir; then if test -d $shadow_cv_logdir; then
@@ -150,13 +103,7 @@ AC_DEFINE_UNQUOTED(LASTLOG_FILE, "$shadow_cv_logdir/lastlog",
AC_DEFINE_UNQUOTED(FAILLOG_FILE, "$shadow_cv_logdir/faillog", AC_DEFINE_UNQUOTED(FAILLOG_FILE, "$shadow_cv_logdir/faillog",
[Path for faillog file.]) [Path for faillog file.])
AC_CACHE_CHECK([location of the passwd program], shadow_cv_passwd_dir, AC_DEFINE_UNQUOTED(PASSWD_PROGRAM, "$exec_prefix/bin/passwd",
[if test -f /usr/bin/passwd; then
shadow_cv_passwd_dir=/usr/bin
else
shadow_cv_passwd_dir=/bin
fi])
AC_DEFINE_UNQUOTED(PASSWD_PROGRAM, "$shadow_cv_passwd_dir/passwd",
[Path to passwd program.]) [Path to passwd program.])
AC_ARG_ENABLE(shadowgrp, AC_ARG_ENABLE(shadowgrp,
+1 -1
View File
@@ -1751,7 +1751,7 @@
} }
#ifdef HAS_SHADOW #ifdef HAS_SHADOW
if ((pw->pw_passwd && pw->pw_passwd[0] == '@' 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)) { || !valid (passwd, pw)) {
return (UPAP_AUTHNAK); return (UPAP_AUTHNAK);
} }
-1
View File
@@ -11,7 +11,6 @@ pamd_files = \
passwd passwd
pamd_acct_tools_files = \ pamd_acct_tools_files = \
chage \
chgpasswd \ chgpasswd \
groupadd \ groupadd \
groupdel \ groupdel \
-1
View File
@@ -342,7 +342,6 @@ top_srcdir = @top_srcdir@
pamd_files = chpasswd chfn chsh groupmems login newusers passwd \ pamd_files = chpasswd chfn chsh groupmems login newusers passwd \
$(am__append_2) $(am__append_2)
pamd_acct_tools_files = \ pamd_acct_tools_files = \
chage \
chgpasswd \ chgpasswd \
groupadd \ groupadd \
groupdel \ groupdel \
-4
View File
@@ -1,4 +0,0 @@
#%PAM-1.0
auth sufficient pam_rootok.so
account required pam_permit.so
password include system-auth
+26 -4
View File
@@ -155,6 +155,14 @@ libshadow_la_SOURCES = \
run_part.h \ run_part.h \
run_part.c \ run_part.c \
salt.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 \ selinux.c \
semanage.c \ semanage.c \
setugid.c \ setugid.c \
@@ -165,6 +173,8 @@ libshadow_la_SOURCES = \
sgroupio.c \ sgroupio.c \
sgroupio.h\ sgroupio.h\
shadow.c \ shadow.c \
shadow/grp/agetgroups.c \
shadow/grp/agetgroups.h \
shadowio.c \ shadowio.c \
shadowio.h \ shadowio.h \
shadowlog.c \ shadowlog.c \
@@ -176,6 +186,8 @@ libshadow_la_SOURCES = \
spawn.c \ spawn.c \
sssd.c \ sssd.c \
sssd.h \ sssd.h \
string/ctype/strisascii/strisdigit.c \
string/ctype/strisascii/strisdigit.h \
string/memset/memzero.c \ string/memset/memzero.c \
string/memset/memzero.h \ string/memset/memzero.h \
string/sprintf/snprintf.c \ string/sprintf/snprintf.c \
@@ -186,12 +198,12 @@ libshadow_la_SOURCES = \
string/sprintf/xasprintf.h \ string/sprintf/xasprintf.h \
string/strchr/strchrcnt.c \ string/strchr/strchrcnt.c \
string/strchr/strchrcnt.h \ string/strchr/strchrcnt.h \
string/strchr/stpspn.c \ string/strchr/strchrscnt.c \
string/strchr/stpspn.h \ string/strchr/strchrscnt.h \
string/strchr/strnul.c \ string/strchr/strnul.c \
string/strchr/strnul.h \ string/strchr/strnul.h \
string/strchr/strrspn.c \ string/strcmp/strcaseeq.c \
string/strchr/strrspn.h \ string/strcmp/strcaseeq.h \
string/strcmp/streq.c \ string/strcmp/streq.c \
string/strcmp/streq.h \ string/strcmp/streq.h \
string/strcpy/stpecpy.c \ string/strcpy/stpecpy.c \
@@ -210,6 +222,16 @@ libshadow_la_SOURCES = \
string/strdup/xstrndup.h \ string/strdup/xstrndup.h \
string/strftime.c \ string/strftime.c \
string/strftime.h \ 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.c \
string/strtok/stpsep.h \ string/strtok/stpsep.h \
strtoday.c \ strtoday.c \
+287 -45
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 \ 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 \ 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 \ 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 \ root_flag.c run_part.h run_part.c salt.c search/cmp/cmp.c \
setugid.c setupenv.c sgetgrent.c sgetpwent.c sgetspent.c \ search/cmp/cmp.h search/l/lfind.c search/l/lfind.h \
sgroupio.c sgroupio.h shadow.c shadowio.c shadowio.h \ search/l/lsearch.c search/l/lsearch.h search/sort/qsort.c \
shadowlog.c shadowlog.h shadowlog_internal.h shadowmem.c \ search/sort/qsort.h selinux.c semanage.c setugid.c setupenv.c \
shell.c sizeof.h spawn.c sssd.c sssd.h string/memset/memzero.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/memset/memzero.h string/sprintf/snprintf.c \
string/sprintf/snprintf.h string/sprintf/stpeprintf.c \ string/sprintf/snprintf.h string/sprintf/stpeprintf.c \
string/sprintf/stpeprintf.h string/sprintf/xasprintf.c \ string/sprintf/stpeprintf.h string/sprintf/xasprintf.c \
string/sprintf/xasprintf.h string/strchr/strchrcnt.c \ string/sprintf/xasprintf.h string/strchr/strchrcnt.c \
string/strchr/strchrcnt.h string/strchr/stpspn.c \ string/strchr/strchrcnt.h string/strchr/strchrscnt.c \
string/strchr/stpspn.h string/strchr/strnul.c \ string/strchr/strchrscnt.h string/strchr/strnul.c \
string/strchr/strnul.h string/strchr/strrspn.c \ string/strchr/strnul.h string/strcmp/strcaseeq.c \
string/strchr/strrspn.h string/strcmp/streq.c \ string/strcmp/strcaseeq.h string/strcmp/streq.c \
string/strcmp/streq.h string/strcpy/stpecpy.c \ string/strcmp/streq.h string/strcpy/stpecpy.c \
string/strcpy/stpecpy.h string/strcpy/strncat.c \ string/strcpy/stpecpy.h string/strcpy/strncat.c \
string/strcpy/strncat.h string/strcpy/strncpy.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/strndupa.h string/strdup/xstrdup.c \
string/strdup/xstrdup.h string/strdup/xstrndup.c \ string/strdup/xstrdup.h string/strdup/xstrndup.c \
string/strdup/xstrndup.h string/strftime.c string/strftime.h \ 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 \ string/strtok/stpsep.c string/strtok/stpsep.h strtoday.c sub.c \
subordinateio.h subordinateio.c sulog.c time/day_to_str.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 \ 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-pwd2spwd.lo libshadow_la-pwdcheck.lo \
libshadow_la-pwmem.lo libshadow_la-remove_tree.lo \ libshadow_la-pwmem.lo libshadow_la-remove_tree.lo \
libshadow_la-root_flag.lo libshadow_la-run_part.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-semanage.lo libshadow_la-setugid.lo \
libshadow_la-setupenv.lo libshadow_la-sgetgrent.lo \ libshadow_la-setupenv.lo libshadow_la-sgetgrent.lo \
libshadow_la-sgetpwent.lo libshadow_la-sgetspent.lo \ libshadow_la-sgetpwent.lo libshadow_la-sgetspent.lo \
libshadow_la-sgroupio.lo libshadow_la-shadow.lo \ libshadow_la-sgroupio.lo libshadow_la-shadow.lo \
libshadow_la-shadowio.lo libshadow_la-shadowlog.lo \ shadow/grp/libshadow_la-agetgroups.lo libshadow_la-shadowio.lo \
libshadow_la-shadowmem.lo libshadow_la-shell.lo \ libshadow_la-shadowlog.lo libshadow_la-shadowmem.lo \
libshadow_la-spawn.lo libshadow_la-sssd.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/memset/libshadow_la-memzero.lo \
string/sprintf/libshadow_la-snprintf.lo \ string/sprintf/libshadow_la-snprintf.lo \
string/sprintf/libshadow_la-stpeprintf.lo \ string/sprintf/libshadow_la-stpeprintf.lo \
string/sprintf/libshadow_la-xasprintf.lo \ string/sprintf/libshadow_la-xasprintf.lo \
string/strchr/libshadow_la-strchrcnt.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-strnul.lo \
string/strchr/libshadow_la-strrspn.lo \ string/strcmp/libshadow_la-strcaseeq.lo \
string/strcmp/libshadow_la-streq.lo \ string/strcmp/libshadow_la-streq.lo \
string/strcpy/libshadow_la-stpecpy.lo \ string/strcpy/libshadow_la-stpecpy.lo \
string/strcpy/libshadow_la-strncat.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-xstrdup.lo \
string/strdup/libshadow_la-xstrndup.lo \ string/strdup/libshadow_la-xstrndup.lo \
string/libshadow_la-strftime.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 \ string/strtok/libshadow_la-stpsep.lo libshadow_la-strtoday.lo \
libshadow_la-sub.lo libshadow_la-subordinateio.lo \ libshadow_la-sub.lo libshadow_la-subordinateio.lo \
libshadow_la-sulog.lo time/libshadow_la-day_to_str.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 \ atoi/strtoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo \
fs/readlink/$(DEPDIR)/libshadow_la-areadlink.Plo \ fs/readlink/$(DEPDIR)/libshadow_la-areadlink.Plo \
fs/readlink/$(DEPDIR)/libshadow_la-readlinknul.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/$(DEPDIR)/libshadow_la-strftime.Plo \
string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Plo \
string/memset/$(DEPDIR)/libshadow_la-memzero.Plo \ string/memset/$(DEPDIR)/libshadow_la-memzero.Plo \
string/sprintf/$(DEPDIR)/libshadow_la-snprintf.Plo \ string/sprintf/$(DEPDIR)/libshadow_la-snprintf.Plo \
string/sprintf/$(DEPDIR)/libshadow_la-stpeprintf.Plo \ string/sprintf/$(DEPDIR)/libshadow_la-stpeprintf.Plo \
string/sprintf/$(DEPDIR)/libshadow_la-xasprintf.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-strchrcnt.Plo \
string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Plo \
string/strchr/$(DEPDIR)/libshadow_la-strnul.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/strcmp/$(DEPDIR)/libshadow_la-streq.Plo \
string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo \ string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo \
string/strcpy/$(DEPDIR)/libshadow_la-strncat.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-strndupa.Plo \
string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo \ string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo \
string/strdup/$(DEPDIR)/libshadow_la-xstrndup.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 \ string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo \
time/$(DEPDIR)/libshadow_la-day_to_str.Plo time/$(DEPDIR)/libshadow_la-day_to_str.Plo
am__mv = mv -f 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 \ 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 \ 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 \ 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 \ root_flag.c run_part.h run_part.c salt.c search/cmp/cmp.c \
setugid.c setupenv.c sgetgrent.c sgetpwent.c sgetspent.c \ search/cmp/cmp.h search/l/lfind.c search/l/lfind.h \
sgroupio.c sgroupio.h shadow.c shadowio.c shadowio.h \ search/l/lsearch.c search/l/lsearch.h search/sort/qsort.c \
shadowlog.c shadowlog.h shadowlog_internal.h shadowmem.c \ search/sort/qsort.h selinux.c semanage.c setugid.c setupenv.c \
shell.c sizeof.h spawn.c sssd.c sssd.h string/memset/memzero.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/memset/memzero.h string/sprintf/snprintf.c \
string/sprintf/snprintf.h string/sprintf/stpeprintf.c \ string/sprintf/snprintf.h string/sprintf/stpeprintf.c \
string/sprintf/stpeprintf.h string/sprintf/xasprintf.c \ string/sprintf/stpeprintf.h string/sprintf/xasprintf.c \
string/sprintf/xasprintf.h string/strchr/strchrcnt.c \ string/sprintf/xasprintf.h string/strchr/strchrcnt.c \
string/strchr/strchrcnt.h string/strchr/stpspn.c \ string/strchr/strchrcnt.h string/strchr/strchrscnt.c \
string/strchr/stpspn.h string/strchr/strnul.c \ string/strchr/strchrscnt.h string/strchr/strnul.c \
string/strchr/strnul.h string/strchr/strrspn.c \ string/strchr/strnul.h string/strcmp/strcaseeq.c \
string/strchr/strrspn.h string/strcmp/streq.c \ string/strcmp/strcaseeq.h string/strcmp/streq.c \
string/strcmp/streq.h string/strcpy/stpecpy.c \ string/strcmp/streq.h string/strcpy/stpecpy.c \
string/strcpy/stpecpy.h string/strcpy/strncat.c \ string/strcpy/stpecpy.h string/strcpy/strncat.c \
string/strcpy/strncat.h string/strcpy/strncpy.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/strndupa.h string/strdup/xstrdup.c \
string/strdup/xstrdup.h string/strdup/xstrndup.c \ string/strdup/xstrdup.h string/strdup/xstrndup.c \
string/strdup/xstrndup.h string/strftime.c string/strftime.h \ 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 \ string/strtok/stpsep.c string/strtok/stpsep.h strtoday.c sub.c \
subordinateio.h subordinateio.c sulog.c time/day_to_str.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 \ 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/$(DEPDIR)/$(am__dirstamp)
fs/readlink/libshadow_la-readlinknul.lo: fs/readlink/$(am__dirstamp) \ fs/readlink/libshadow_la-readlinknul.lo: fs/readlink/$(am__dirstamp) \
fs/readlink/$(DEPDIR)/$(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): string/memset/$(am__dirstamp):
@$(MKDIR_P) string/memset @$(MKDIR_P) string/memset
@: > string/memset/$(am__dirstamp) @: > string/memset/$(am__dirstamp)
@@ -915,18 +999,20 @@ string/strchr/$(DEPDIR)/$(am__dirstamp):
string/strchr/libshadow_la-strchrcnt.lo: \ string/strchr/libshadow_la-strchrcnt.lo: \
string/strchr/$(am__dirstamp) \ string/strchr/$(am__dirstamp) \
string/strchr/$(DEPDIR)/$(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/$(DEPDIR)/$(am__dirstamp)
string/strchr/libshadow_la-strnul.lo: string/strchr/$(am__dirstamp) \ string/strchr/libshadow_la-strnul.lo: string/strchr/$(am__dirstamp) \
string/strchr/$(DEPDIR)/$(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): string/strcmp/$(am__dirstamp):
@$(MKDIR_P) string/strcmp @$(MKDIR_P) string/strcmp
@: > string/strcmp/$(am__dirstamp) @: > string/strcmp/$(am__dirstamp)
string/strcmp/$(DEPDIR)/$(am__dirstamp): string/strcmp/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) string/strcmp/$(DEPDIR) @$(MKDIR_P) string/strcmp/$(DEPDIR)
@: > string/strcmp/$(DEPDIR)/$(am__dirstamp) @: > 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/libshadow_la-streq.lo: string/strcmp/$(am__dirstamp) \
string/strcmp/$(DEPDIR)/$(am__dirstamp) string/strcmp/$(DEPDIR)/$(am__dirstamp)
string/strcpy/$(am__dirstamp): string/strcpy/$(am__dirstamp):
@@ -963,6 +1049,22 @@ string/$(DEPDIR)/$(am__dirstamp):
@: > string/$(DEPDIR)/$(am__dirstamp) @: > string/$(DEPDIR)/$(am__dirstamp)
string/libshadow_la-strftime.lo: string/$(am__dirstamp) \ string/libshadow_la-strftime.lo: string/$(am__dirstamp) \
string/$(DEPDIR)/$(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): string/strtok/$(am__dirstamp):
@$(MKDIR_P) string/strtok @$(MKDIR_P) string/strtok
@: > string/strtok/$(am__dirstamp) @: > string/strtok/$(am__dirstamp)
@@ -999,8 +1101,18 @@ mostlyclean-compile:
-rm -f atoi/strtoi/*.lo -rm -f atoi/strtoi/*.lo
-rm -f fs/readlink/*.$(OBJEXT) -rm -f fs/readlink/*.$(OBJEXT)
-rm -f fs/readlink/*.lo -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/*.$(OBJEXT)
-rm -f string/*.lo -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/*.$(OBJEXT)
-rm -f string/memset/*.lo -rm -f string/memset/*.lo
-rm -f string/sprintf/*.$(OBJEXT) -rm -f string/sprintf/*.$(OBJEXT)
@@ -1013,6 +1125,8 @@ mostlyclean-compile:
-rm -f string/strcpy/*.lo -rm -f string/strcpy/*.lo
-rm -f string/strdup/*.$(OBJEXT) -rm -f string/strdup/*.$(OBJEXT)
-rm -f string/strdup/*.lo -rm -f string/strdup/*.lo
-rm -f string/strspn/*.$(OBJEXT)
-rm -f string/strspn/*.lo
-rm -f string/strtok/*.$(OBJEXT) -rm -f string/strtok/*.$(OBJEXT)
-rm -f string/strtok/*.lo -rm -f string/strtok/*.lo
-rm -f time/*.$(OBJEXT) -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@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-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@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/$(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/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-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-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/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-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-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/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-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 @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-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-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/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@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 @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@ @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 @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 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_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 @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@ @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 @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 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_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 @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@ @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 @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 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_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 @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@ @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 @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 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-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_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-stpspn.Tpo string/strchr/$(DEPDIR)/libshadow_la-stpspn.Plo @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/stpspn.c' object='string/strchr/libshadow_la-stpspn.lo' libtool=yes @AMDEPBACKSLASH@ @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@ @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 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 @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@ @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 @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 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/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_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/strchr/$(DEPDIR)/libshadow_la-strrspn.Tpo string/strchr/$(DEPDIR)/libshadow_la-strrspn.Plo @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/strchr/strrspn.c' object='string/strchr/libshadow_la-strrspn.lo' libtool=yes @AMDEPBACKSLASH@ @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@ @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 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 @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@ @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 @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 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_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 @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/str2i/.libs atoi/str2i/_libs
-rm -rf atoi/strtoi/.libs atoi/strtoi/_libs -rm -rf atoi/strtoi/.libs atoi/strtoi/_libs
-rm -rf fs/readlink/.libs fs/readlink/_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/.libs string/_libs
-rm -rf string/ctype/strisascii/.libs string/ctype/strisascii/_libs
-rm -rf string/memset/.libs string/memset/_libs -rm -rf string/memset/.libs string/memset/_libs
-rm -rf string/sprintf/.libs string/sprintf/_libs -rm -rf string/sprintf/.libs string/sprintf/_libs
-rm -rf string/strchr/.libs string/strchr/_libs -rm -rf string/strchr/.libs string/strchr/_libs
-rm -rf string/strcmp/.libs string/strcmp/_libs -rm -rf string/strcmp/.libs string/strcmp/_libs
-rm -rf string/strcpy/.libs string/strcpy/_libs -rm -rf string/strcpy/.libs string/strcpy/_libs
-rm -rf string/strdup/.libs string/strdup/_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 string/strtok/.libs string/strtok/_libs
-rm -rf time/.libs time/_libs -rm -rf time/.libs time/_libs
@@ -2357,8 +2565,18 @@ distclean-generic:
-rm -f atoi/strtoi/$(am__dirstamp) -rm -f atoi/strtoi/$(am__dirstamp)
-rm -f fs/readlink/$(DEPDIR)/$(am__dirstamp) -rm -f fs/readlink/$(DEPDIR)/$(am__dirstamp)
-rm -f fs/readlink/$(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/$(DEPDIR)/$(am__dirstamp)
-rm -f string/$(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/$(DEPDIR)/$(am__dirstamp)
-rm -f string/memset/$(am__dirstamp) -rm -f string/memset/$(am__dirstamp)
-rm -f string/sprintf/$(DEPDIR)/$(am__dirstamp) -rm -f string/sprintf/$(DEPDIR)/$(am__dirstamp)
@@ -2371,6 +2589,8 @@ distclean-generic:
-rm -f string/strcpy/$(am__dirstamp) -rm -f string/strcpy/$(am__dirstamp)
-rm -f string/strdup/$(DEPDIR)/$(am__dirstamp) -rm -f string/strdup/$(DEPDIR)/$(am__dirstamp)
-rm -f string/strdup/$(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/$(DEPDIR)/$(am__dirstamp)
-rm -f string/strtok/$(am__dirstamp) -rm -f string/strtok/$(am__dirstamp)
-rm -f time/$(DEPDIR)/$(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 atoi/strtoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo
-rm -f fs/readlink/$(DEPDIR)/libshadow_la-areadlink.Plo -rm -f fs/readlink/$(DEPDIR)/libshadow_la-areadlink.Plo
-rm -f fs/readlink/$(DEPDIR)/libshadow_la-readlinknul.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/$(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/memset/$(DEPDIR)/libshadow_la-memzero.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-snprintf.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-stpeprintf.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-xasprintf.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-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-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/strcmp/$(DEPDIR)/libshadow_la-streq.Plo
-rm -f string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo -rm -f string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo
-rm -f string/strcpy/$(DEPDIR)/libshadow_la-strncat.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-strndupa.Plo
-rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo -rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo
-rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrndup.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 string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo
-rm -f time/$(DEPDIR)/libshadow_la-day_to_str.Plo -rm -f time/$(DEPDIR)/libshadow_la-day_to_str.Plo
-rm -f Makefile -rm -f Makefile
@@ -2700,15 +2931,21 @@ maintainer-clean: maintainer-clean-am
-rm -f atoi/strtoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo -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-areadlink.Plo
-rm -f fs/readlink/$(DEPDIR)/libshadow_la-readlinknul.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/$(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/memset/$(DEPDIR)/libshadow_la-memzero.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-snprintf.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-stpeprintf.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-xasprintf.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-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-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/strcmp/$(DEPDIR)/libshadow_la-streq.Plo
-rm -f string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo -rm -f string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo
-rm -f string/strcpy/$(DEPDIR)/libshadow_la-strncat.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-strndupa.Plo
-rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo -rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo
-rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrndup.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 string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo
-rm -f time/$(DEPDIR)/libshadow_la-day_to_str.Plo -rm -f time/$(DEPDIR)/libshadow_la-day_to_str.Plo
-rm -f Makefile -rm -f Makefile
+38 -73
View File
@@ -1,15 +1,14 @@
/* // SPDX-FileCopyrightText: 1989-1994, Julianne Frances Haugh
* SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh // SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz
* SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz // SPDX-FileCopyrightText: 2001-2006, Tomasz Kłoczko
* SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko // SPDX-FileCopyrightText: 2007-2009, Nicolas François
* SPDX-FileCopyrightText: 2007 - 2009, Nicolas François // SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
* // SPDX-License-Identifier: BSD-3-Clause
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <config.h> #include <config.h>
#if defined (HAVE_SETGROUPS) && ! defined (USE_PAM) #if !defined(USE_PAM)
#include "prototypes.h" #include "prototypes.h"
#include "defines.h" #include "defines.h"
@@ -18,12 +17,14 @@
#include <grp.h> #include <grp.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <sys/types.h>
#include "alloc/malloc.h"
#include "alloc/reallocf.h" #include "alloc/reallocf.h"
#include "search/l/lsearch.h"
#include "shadow/grp/agetgroups.h"
#include "shadowlog.h" #include "shadowlog.h"
#include "string/strchr/strchrscnt.h"
#ident "$Id$"
/* /*
* Add groups with names from LIST (separated by commas or colons) * Add groups with names from LIST (separated by commas or colons)
@@ -33,48 +34,25 @@
int int
add_groups(const char *list) add_groups(const char *list)
{ {
GETGROUPS_T *grouplist; char *g, *p, *dup;
size_t i;
int ngroups;
bool added;
char *g, *p;
char buf[1024];
int ret;
FILE *shadow_logfd = log_get_logfd(); FILE *shadow_logfd = log_get_logfd();
gid_t *gids;
size_t n;
if (strlen (list) >= sizeof (buf)) { gids = agetgroups(&n);
errno = EINVAL; if (gids == NULL)
return -1; return -1;
}
strcpy (buf, list);
i = 16; gids = REALLOCF(gids, n + strchrscnt(list, ",:") + 1, gid_t);
for (;;) { if (gids == NULL)
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);
return -1; return -1;
}
added = false; p = dup = strdup(list);
p = buf; if (dup == NULL)
goto free_gids;
while (NULL != (g = strsep(&p, ",:"))) { while (NULL != (g = strsep(&p, ",:"))) {
struct group *grp; struct group *grp;
grp = getgrnam(g); /* local, no need for xgetgrnam */ grp = getgrnam(g); /* local, no need for xgetgrnam */
if (NULL == grp) { if (NULL == grp) {
@@ -82,35 +60,22 @@ add_groups(const char *list)
continue; 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) { if (setgroups(n, gids) == -1) {
continue; fprintf(shadow_logfd, "setgroups: %s\n", strerror(errno));
} goto free_gids;
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 (added) { free(gids);
ret = setgroups (ngroups, grouplist);
free (grouplist);
return ret;
}
free (grouplist);
return 0; 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 */
-2
View File
@@ -11,5 +11,3 @@
extern inline long addsl2(long a, long b); extern inline long addsl2(long a, long b);
extern inline long addslN(size_t n, long addend[n]); extern inline long addslN(size_t n, long addend[n]);
extern inline int cmpl(const void *p1, const void *p2);
+3 -19
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 // SPDX-License-Identifier: BSD-3-Clause
@@ -11,8 +11,8 @@
#include <errno.h> #include <errno.h>
#include <limits.h> #include <limits.h>
#include <stddef.h> #include <stddef.h>
#include <stdlib.h>
#include "search/sort/qsort.h"
#include "sizeof.h" #include "sizeof.h"
@@ -27,8 +27,6 @@
inline long addsl2(long a, long b); inline long addsl2(long a, long b);
inline long addslN(size_t n, long addend[n]); inline long addslN(size_t n, long addend[n]);
inline int cmpl(const void *p1, const void *p2);
inline long inline long
addsl2(long a, long b) addsl2(long a, long b)
@@ -57,7 +55,7 @@ addslN(size_t n, long addend[n])
e = errno; e = errno;
while (n > 1) { while (n > 1) {
qsort(addend, n, sizeof(addend[0]), cmpl); QSORT(addend, n);
errno = 0; errno = 0;
addend[0] = addsl2(addend[0], addend[--n]); 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 #endif // include guard
+1 -1
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 * passwd to work just like it would had they executed
* it from the command line while logged in. * 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) if (setup_uid_gid (pw, false) != 0)
#else #else
if (setup_uid_gid (pw) != 0) if (setup_uid_gid (pw) != 0)
+1 -1
View File
@@ -5,7 +5,7 @@
#include "config.h" #include "config.h"
#if defined(__GNUC__) #if (__GNUC__ >= 10)
# define MAYBE_UNUSED [[gnu::unused]] # define MAYBE_UNUSED [[gnu::unused]]
# define NORETURN [[gnu::__noreturn__]] # define NORETURN [[gnu::__noreturn__]]
# define format_attr(type, fmt, va) [[gnu::format(type, fmt, va)]] # define format_attr(type, fmt, va) [[gnu::format(type, fmt, va)]]
+50 -3
View File
@@ -25,6 +25,8 @@
#include "attr.h" #include "attr.h"
#include "prototypes.h" #include "prototypes.h"
#include "shadowlog.h" #include "shadowlog.h"
#include "string/sprintf/snprintf.h"
int audit_fd; int audit_fd;
void audit_help_open (void) void audit_help_open (void)
@@ -46,10 +48,14 @@ void audit_help_open (void)
/* /*
* This function will log a message to the audit system using a predefined * This function will log a message to the audit system using a predefined
* message format. Parameter usage is as follows: * message format. For additional information on the user account lifecycle
* events check
* <https://github.com/linux-audit/audit-documentation/wiki/SPEC-User-Account-Lifecycle-Events>
* *
* type - type of message: AUDIT_USER_CHAUTHTOK for changing any account * Parameter usage is as follows:
* attributes. *
* type - type of message. A list of possible values is available in
* "audit-records.h" file.
* pgname - program's name * pgname - program's name
* op - operation. "adding user", "changing finger info", "deleting group" * op - operation. "adding user", "changing finger info", "deleting group"
* name - user's account or group name. If not available use NULL. * name - user's account or group name. If not available use NULL.
@@ -68,6 +74,47 @@ void audit_logger (int type, MAYBE_UNUSED const char *pgname, const char *op,
} }
} }
/*
* This function will log a message to the audit system using a predefined
* message format. For additional information on the group account lifecycle
* events check
* <https://github.com/linux-audit/audit-documentation/wiki/SPEC-User-Account-Lifecycle-Events>
*
* Parameter usage is as follows:
*
* type - type of message. A list of possible values is available in
* "audit-records.h" file.
* op - operation. "adding-user", "modify-group", "deleting-user-from-group"
* name - user's account or group name. If not available use NULL.
* id - uid or gid that the operation is being performed on. This is used
* only when user is NULL.
* grp_type - type of group: "grp" or "new_group"
* grp - group name associated with event
*/
void
audit_logger_with_group(int type, const char *op, const char *name,
id_t id, const char *grp_type, const char *grp,
shadow_audit_result result)
{
int len;
char enc_group[GROUP_NAME_MAX_LENGTH * 2 + 1];
char buf[NITEMS(enc_group) + 100];
if (audit_fd < 0)
return;
len = strnlen(grp, sizeof(enc_group)/2);
if (audit_value_needs_encoding(grp, len)) {
SNPRINTF(buf, "%s %s=%s", op, grp_type,
audit_encode_value(enc_group, grp, len));
} else {
SNPRINTF(buf, "%s %s=\"%s\"", op, grp_type, grp);
}
audit_log_acct_message(audit_fd, type, NULL, buf, name, id,
NULL, NULL, NULL, result);
}
void audit_logger_message (const char *message, shadow_audit_result result) void audit_logger_message (const char *message, shadow_audit_result result)
{ {
if (audit_fd < 0) { if (audit_fd < 0) {
+13 -13
View File
@@ -1,10 +1,8 @@
/* // SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh
* SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh // SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz
* SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz // SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko
* SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko // SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
* // SPDX-License-Identifier: BSD-3-Clause
* SPDX-License-Identifier: BSD-3-Clause
*/
/* /*
* basename.c - not worth copyrighting :-). Some versions of Linux libc * basename.c - not worth copyrighting :-). Some versions of Linux libc
@@ -15,17 +13,19 @@
#include <config.h> #include <config.h>
#ident "$Id$" #include <stddef.h>
#include <stdlib.h>
#include "defines.h"
#include "prototypes.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) { if (str == NULL) {
abort (); abort ();
} }
char *cp = strrchr (str, '/'); return stprcspn(str, "/");
return (NULL != cp) ? cp + 1 : str;
} }
+18 -19
View File
@@ -2,7 +2,7 @@
// SPDX-FileCopyrightText: 1996-2000, Marek Michałkiewicz // SPDX-FileCopyrightText: 1996-2000, Marek Michałkiewicz
// SPDX-FileCopyrightText: 2001-2005, Tomasz Kłoczko // SPDX-FileCopyrightText: 2001-2005, Tomasz Kłoczko
// SPDX-FileCopyrightText: 2005-2008, Nicolas François // 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 // SPDX-License-Identifier: BSD-3-Clause
@@ -27,15 +27,19 @@
#include <limits.h> #include <limits.h>
#include <stdbool.h> #include <stdbool.h>
#include <stddef.h> #include <stddef.h>
#include <stdint.h>
#include <sys/param.h>
#include <unistd.h> #include <unistd.h>
#include "defines.h" #include "defines.h"
#include "chkname.h" #include "chkname.h"
#include "string/ctype/strisascii/strisdigit.h"
#include "string/strcmp/streq.h" #include "string/strcmp/streq.h"
#ifndef LOGIN_NAME_MAX
# define LOGIN_NAME_MAX 256
#endif
int allow_bad_names = false; int allow_bad_names = false;
@@ -44,12 +48,11 @@ login_name_max_size(void)
{ {
long conf; long conf;
errno = 0;
conf = sysconf(_SC_LOGIN_NAME_MAX); conf = sysconf(_SC_LOGIN_NAME_MAX);
if (conf == -1 && errno != 0) if (conf == -1)
return LOGIN_NAME_MAX; 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 "..". * Also do not allow fully numeric names or just "." or "..".
*/ */
int numeric;
if ('\0' == *name || if (strisdigit(name)) {
('.' == *name && (('.' == name[1] && '\0' == name[2]) || errno = EINVAL;
'\0' == name[1])) || return false;
}
if (streq(name, "") ||
streq(name, ".") ||
streq(name, "..") ||
!((*name >= 'a' && *name <= 'z') || !((*name >= 'a' && *name <= 'z') ||
(*name >= 'A' && *name <= 'Z') || (*name >= 'A' && *name <= 'Z') ||
(*name >= '0' && *name <= '9') || (*name >= '0' && *name <= '9') ||
@@ -84,8 +91,6 @@ is_valid_name(const char *name)
return false; return false;
} }
numeric = isdigit(*name);
while (!streq(++name, "")) { while (!streq(++name, "")) {
if (!((*name >= 'a' && *name <= 'z') || if (!((*name >= 'a' && *name <= 'z') ||
(*name >= 'A' && *name <= 'Z') || (*name >= 'A' && *name <= 'Z') ||
@@ -93,18 +98,12 @@ is_valid_name(const char *name)
*name == '_' || *name == '_' ||
*name == '.' || *name == '.' ||
*name == '-' || *name == '-' ||
(*name == '$' && name[1] == '\0') streq(name, "$")
)) ))
{ {
errno = EINVAL; errno = EINVAL;
return false; return false;
} }
numeric &= isdigit(*name);
}
if (numeric) {
errno = EINVAL;
return false;
} }
return true; return true;
+11 -11
View File
@@ -62,7 +62,7 @@ void cleanup_report_mod_group (void *cleanup_info)
gr_dbname (), gr_dbname (),
info->action)); info->action));
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger (AUDIT_USER_ACCT, log_get_progname(), audit_logger (AUDIT_GRP_MGMT, log_get_progname(),
info->audit_msg, info->audit_msg,
info->name, AUDIT_NO_ID, info->name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE); SHADOW_AUDIT_FAILURE);
@@ -80,7 +80,7 @@ void cleanup_report_mod_gshadow (void *cleanup_info)
sgr_dbname (), sgr_dbname (),
info->action)); info->action));
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger (AUDIT_USER_ACCT, log_get_progname(), audit_logger (AUDIT_GRP_MGMT, log_get_progname(),
info->audit_msg, info->audit_msg,
info->name, AUDIT_NO_ID, info->name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE); SHADOW_AUDIT_FAILURE);
@@ -101,7 +101,7 @@ void cleanup_report_add_group_group (void *group_name)
SYSLOG ((LOG_ERR, "failed to add group %s to %s", name, gr_dbname ())); SYSLOG ((LOG_ERR, "failed to add group %s to %s", name, gr_dbname ()));
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger (AUDIT_ADD_GROUP, log_get_progname(), audit_logger (AUDIT_ADD_GROUP, log_get_progname(),
"adding group to /etc/group", "adding-group",
name, AUDIT_NO_ID, name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE); SHADOW_AUDIT_FAILURE);
#endif #endif
@@ -120,8 +120,8 @@ void cleanup_report_add_group_gshadow (void *group_name)
SYSLOG ((LOG_ERR, "failed to add group %s to %s", name, sgr_dbname ())); SYSLOG ((LOG_ERR, "failed to add group %s to %s", name, sgr_dbname ()));
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger (AUDIT_ADD_GROUP, log_get_progname(), audit_logger (AUDIT_GRP_MGMT, log_get_progname(),
"adding group to /etc/gshadow", "adding-shadow-group",
name, AUDIT_NO_ID, name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE); SHADOW_AUDIT_FAILURE);
#endif #endif
@@ -143,8 +143,8 @@ void cleanup_report_del_group_group (void *group_name)
"failed to remove group %s from %s", "failed to remove group %s from %s",
name, gr_dbname ())); name, gr_dbname ()));
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger (AUDIT_ADD_GROUP, log_get_progname(), audit_logger (AUDIT_DEL_GROUP, log_get_progname(),
"removing group from /etc/group", "removing-group",
name, AUDIT_NO_ID, name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE); SHADOW_AUDIT_FAILURE);
#endif #endif
@@ -166,8 +166,8 @@ void cleanup_report_del_group_gshadow (void *group_name)
"failed to remove group %s from %s", "failed to remove group %s from %s",
name, sgr_dbname ())); name, sgr_dbname ()));
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger (AUDIT_ADD_GROUP, log_get_progname(), audit_logger (AUDIT_GRP_MGMT, log_get_progname(),
"removing group from /etc/gshadow", "removing-shadow-group",
name, AUDIT_NO_ID, name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE); SHADOW_AUDIT_FAILURE);
#endif #endif
@@ -187,7 +187,7 @@ void cleanup_unlock_group (MAYBE_UNUSED void *arg)
log_get_progname(), gr_dbname ()); log_get_progname(), gr_dbname ());
SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ()));
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger_message ("unlocking group file", audit_logger_message ("unlocking-group",
SHADOW_AUDIT_FAILURE); SHADOW_AUDIT_FAILURE);
#endif #endif
} }
@@ -207,7 +207,7 @@ void cleanup_unlock_gshadow (MAYBE_UNUSED void *arg)
log_get_progname(), sgr_dbname ()); log_get_progname(), sgr_dbname ());
SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ()));
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger_message ("unlocking gshadow file", audit_logger_message ("unlocking-gshadow",
SHADOW_AUDIT_FAILURE); SHADOW_AUDIT_FAILURE);
#endif #endif
} }
+6 -6
View File
@@ -44,7 +44,7 @@ void cleanup_report_mod_passwd (void *cleanup_info)
pw_dbname (), pw_dbname (),
info->action)); info->action));
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger (AUDIT_USER_ACCT, log_get_progname(), audit_logger (AUDIT_USER_MGMT, log_get_progname(),
info->audit_msg, info->audit_msg,
info->name, AUDIT_NO_ID, info->name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE); SHADOW_AUDIT_FAILURE);
@@ -65,7 +65,7 @@ void cleanup_report_add_user_passwd (void *user_name)
SYSLOG ((LOG_ERR, "failed to add user %s to %s", name, pw_dbname ())); SYSLOG ((LOG_ERR, "failed to add user %s to %s", name, pw_dbname ()));
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger (AUDIT_ADD_USER, log_get_progname(), audit_logger (AUDIT_ADD_USER, log_get_progname(),
"adding user to /etc/passwd", "adding-user",
name, AUDIT_NO_ID, name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE); SHADOW_AUDIT_FAILURE);
#endif #endif
@@ -84,8 +84,8 @@ void cleanup_report_add_user_shadow (void *user_name)
SYSLOG ((LOG_ERR, "failed to add user %s to %s", name, spw_dbname ())); SYSLOG ((LOG_ERR, "failed to add user %s to %s", name, spw_dbname ()));
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger (AUDIT_ADD_USER, log_get_progname(), audit_logger (AUDIT_USER_MGMT, log_get_progname(),
"adding user to /etc/shadow", "adding-shadow-user",
name, AUDIT_NO_ID, name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE); SHADOW_AUDIT_FAILURE);
#endif #endif
@@ -104,7 +104,7 @@ void cleanup_unlock_passwd (MAYBE_UNUSED void *arg)
log_get_progname(), pw_dbname ()); log_get_progname(), pw_dbname ());
SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ()));
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger_message ("unlocking passwd file", audit_logger_message ("unlocking-passwd",
SHADOW_AUDIT_FAILURE); SHADOW_AUDIT_FAILURE);
#endif #endif
} }
@@ -123,7 +123,7 @@ void cleanup_unlock_shadow (MAYBE_UNUSED void *arg)
log_get_progname(), spw_dbname ()); log_get_progname(), spw_dbname ());
SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ()));
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger_message ("unlocking shadow file", audit_logger_message ("unlocking-shadow",
SHADOW_AUDIT_FAILURE); SHADOW_AUDIT_FAILURE);
#endif #endif
} }
+15 -24
View File
@@ -74,17 +74,10 @@ int lrename (const char *old, const char *new)
{ {
int res; int res;
char *r = NULL; char *r = NULL;
#ifndef __GLIBC__
char resolved_path[PATH_MAX];
#endif /* !__GLIBC__ */
struct stat sb; struct stat sb;
if (lstat (new, &sb) == 0 && S_ISLNK (sb.st_mode)) { if (lstat (new, &sb) == 0 && S_ISLNK (sb.st_mode)) {
#ifdef __GLIBC__ /* now a POSIX.1-2008 feature */
r = realpath (new, NULL); r = realpath (new, NULL);
#else /* !__GLIBC__ */
r = realpath (new, resolved_path);
#endif /* !__GLIBC__ */
if (NULL == r) { if (NULL == r) {
perror ("realpath in lrename()"); perror ("realpath in lrename()");
} else { } else {
@@ -94,9 +87,7 @@ int lrename (const char *old, const char *new)
res = rename (old, new); res = rename (old, new);
#ifdef __GLIBC__
free (r); free (r);
#endif /* __GLIBC__ */
return res; return res;
} }
@@ -891,7 +882,7 @@ static int write_all (const struct commonio_db *db)
int commonio_close (struct commonio_db *db) int commonio_close (struct commonio_db *db)
{ {
int errors = 0; bool errors = false;
char buf[1024]; char buf[1024];
struct stat sb; struct stat sb;
@@ -932,25 +923,25 @@ int commonio_close (struct commonio_db *db)
#ifdef WITH_SELINUX #ifdef WITH_SELINUX
if (set_selinux_file_context (db->filename, S_IFREG) != 0) { if (set_selinux_file_context (db->filename, S_IFREG) != 0) {
errors++; errors = true;
} }
#endif #endif
if (create_backup (buf, db->fp) != 0) { if (create_backup (buf, db->fp) != 0) {
errors++; errors = true;
} }
if (fclose (db->fp) != 0) { if (fclose (db->fp) != 0) {
errors++; errors = true;
} }
db->fp = NULL; db->fp = NULL;
#ifdef WITH_SELINUX #ifdef WITH_SELINUX
if (reset_selinux_file_context () != 0) { if (reset_selinux_file_context () != 0) {
errors++; errors = true;
} }
#endif #endif
if (errors != 0) if (errors)
goto fail; goto fail;
} else { } else {
/* /*
@@ -966,7 +957,7 @@ int commonio_close (struct commonio_db *db)
#ifdef WITH_SELINUX #ifdef WITH_SELINUX
if (set_selinux_file_context (db->filename, S_IFREG) != 0) { if (set_selinux_file_context (db->filename, S_IFREG) != 0) {
errors++; errors = true;
} }
#endif #endif
@@ -976,24 +967,24 @@ int commonio_close (struct commonio_db *db)
} }
if (write_all (db) != 0) { if (write_all (db) != 0) {
errors++; errors = true;
} }
if (fflush (db->fp) != 0) { if (fflush (db->fp) != 0) {
errors++; errors = true;
} }
if (fsync (fileno (db->fp)) != 0) { if (fsync (fileno (db->fp)) != 0) {
errors++; errors = true;
} }
if (fclose (db->fp) != 0) { if (fclose (db->fp) != 0) {
errors++; errors = true;
} }
db->fp = NULL; db->fp = NULL;
if (errors != 0) { if (errors) {
unlink (buf); unlink (buf);
goto fail; goto fail;
} }
@@ -1011,11 +1002,11 @@ int commonio_close (struct commonio_db *db)
nscd_need_reload = true; nscd_need_reload = true;
goto success; goto success;
fail: fail:
errors++; errors = true;
success: success:
free_linked_list (db); free_linked_list (db);
return errors == 0; return !errors;
} }
static /*@dependent@*/ /*@null@*/struct commonio_entry *next_entry_by_name ( static /*@dependent@*/ /*@null@*/struct commonio_entry *next_entry_by_name (
+2 -2
View File
@@ -10,8 +10,8 @@
#include <stdint.h> #include <stdint.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#if HAVE_SYS_RANDOM_H #if __has_include(<sys/random.h>)
#include <sys/random.h> # include <sys/random.h>
#endif #endif
#include "bit.h" #include "bit.h"
+2 -7
View File
@@ -41,7 +41,7 @@
* crypt(3), crypt_gensalt(3), and their * crypt(3), crypt_gensalt(3), and their
* feature test macros may be defined in here. * feature test macros may be defined in here.
*/ */
#if HAVE_CRYPT_H #if __has_include(<crypt.h>)
# include <crypt.h> # include <crypt.h>
#endif #endif
@@ -50,13 +50,8 @@
#include <dirent.h> #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> #include <shadow.h>
#if defined(SHADOWGRP) && !defined(GSHADOW) #if defined(SHADOWGRP)
#include "gshadow_.h" #include "gshadow_.h"
#endif #endif
+2 -1
View File
@@ -65,7 +65,8 @@
(void) fprintf (shadow_logfd, (void) fprintf (shadow_logfd,
_("crypt method not supported by libcrypt? (%s)\n"), _("crypt method not supported by libcrypt? (%s)\n"),
method); method);
exit (EXIT_FAILURE); errno = EINVAL;
return NULL;
} }
if (strlen (cp) != 13) { if (strlen (cp) != 13) {
+3 -3
View File
@@ -16,9 +16,9 @@
#include <stdio.h> #include <stdio.h>
#include "prototypes.h" #include "prototypes.h"
#include "string/strchr/stpspn.h"
#include "string/strchr/strrspn.h"
#include "string/strcmp/streq.h" #include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
#include "string/strspn/stprspn.h"
#include "string/strtok/stpsep.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 * makes it possible to change the field to empty, by
* entering a space. --marekm * entering a space. --marekm
*/ */
stpcpy(strrspn(newf, " \t"), ""); stpcpy(stprspn(newf, " \t"), "");
cp = stpspn(newf, " \t"); cp = stpspn(newf, " \t");
strcpy (buf, cp); strcpy (buf, cp);
} }
+2 -3
View File
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org> // SPDX-FileCopyrightText: 2024-2025, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause // SPDX-License-Identifier: BSD-3-Clause
@@ -6,9 +6,8 @@
#include "fs/readlink/readlinknul.h" #include "fs/readlink/readlinknul.h"
#include <stddef.h>
#include <sys/types.h> #include <sys/types.h>
extern inline ssize_t readlinknul(const char *restrict link, char *restrict buf, extern inline ssize_t readlinknul(const char *restrict link, char *restrict buf,
size_t size); ssize_t size);
+9 -12
View File
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org> // SPDX-FileCopyrightText: 2024-2025, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause // SPDX-License-Identifier: BSD-3-Clause
@@ -9,7 +9,6 @@
#include <config.h> #include <config.h>
#include <errno.h> #include <errno.h>
#include <stddef.h>
#include <string.h> #include <string.h>
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h> #include <unistd.h>
@@ -23,30 +22,28 @@
ATTR_STRING(1) ATTR_STRING(1)
inline ssize_t readlinknul(const char *restrict link, char *restrict buf, inline ssize_t readlinknul(const char *restrict link, char *restrict buf,
size_t size); ssize_t size);
// Similar to readlink(2), but terminate the string. // Similar to readlink(2), but terminate the string.
inline ssize_t inline ssize_t
readlinknul(const char *restrict link, char *restrict buf, size_t size) readlinknul(const char *restrict link, char *restrict buf, ssize_t size)
{ {
size_t ulen; ssize_t len;
ssize_t slen;
slen = readlink(link, buf, size); len = readlink(link, buf, size);
if (slen == -1) if (len == -1)
return -1; return -1;
ulen = slen; if (len == size) {
if (ulen == size) {
stpcpy(&buf[size-1], ""); stpcpy(&buf[size-1], "");
errno = E2BIG; errno = E2BIG;
return -1; return -1;
} }
stpcpy(&buf[ulen], ""); stpcpy(&buf[len], "");
return slen; return len;
} }
+246 -489
View File
File diff suppressed because it is too large Load Diff
+13 -218
View File
@@ -31,8 +31,8 @@
#include "attr.h" #include "attr.h"
#include "getdate.h" #include "getdate.h"
#include "string/strchr/stpspn.h"
#include "string/strcmp/streq.h" #include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
/* Some old versions of bison generate parsers that use bcopy. /* Some old versions of bison generate parsers that use bcopy.
@@ -92,8 +92,6 @@
static int yylex (void); static int yylex (void);
static int yyerror (const char *s); static int yyerror (const char *s);
#define EPOCH 1970
#define HOUR(x) ((x) * 60)
#define MAX_BUFF_LEN 128 /* size of buffer to read the date into */ #define MAX_BUFF_LEN 128 /* size of buffer to read the date into */
@@ -128,8 +126,6 @@ static int yyHaveDate;
static int yyHaveDay; static int yyHaveDay;
static int yyHaveRel; static int yyHaveRel;
static int yyHaveTime; static int yyHaveTime;
static int yyHaveZone;
static int yyTimezone;
static int yyDay; static int yyDay;
static int yyHour; static int yyHour;
static int yyMinutes; static int yyMinutes;
@@ -151,13 +147,13 @@ static int yyRelYear;
enum _MERIDIAN Meridian; enum _MERIDIAN Meridian;
} }
%token tAGO tDAY tDAY_UNIT tDAYZONE tDST tHOUR_UNIT tID %token tAGO tDAY tDAY_UNIT tHOUR_UNIT tID
%token tMERIDIAN tMINUTE_UNIT tMONTH tMONTH_UNIT %token tMERIDIAN tMINUTE_UNIT tMONTH tMONTH_UNIT
%token tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT tZONE %token tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT
%type <Number> tDAY tDAY_UNIT tDAYZONE tHOUR_UNIT tMINUTE_UNIT %type <Number> tDAY tDAY_UNIT tHOUR_UNIT tMINUTE_UNIT
%type <Number> tMONTH tMONTH_UNIT %type <Number> tMONTH tMONTH_UNIT
%type <Number> tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT tZONE %type <Number> tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT
%type <Meridian> tMERIDIAN o_merid %type <Meridian> tMERIDIAN o_merid
%% %%
@@ -169,9 +165,6 @@ spec : /* NULL */
item : time { item : time {
yyHaveTime++; yyHaveTime++;
} }
| zone {
yyHaveZone++;
}
| date { | date {
yyHaveDate++; yyHaveDate++;
} }
@@ -196,14 +189,10 @@ time : tUNUMBER tMERIDIAN {
yySeconds = 0; yySeconds = 0;
yyMeridian = $4; yyMeridian = $4;
} }
| tUNUMBER ':' tUNUMBER tSNUMBER { | tUNUMBER ':' tUNUMBER {
yyHour = $1; yyHour = $1;
yyMinutes = $3; yyMinutes = $3;
yyMeridian = MER24; yyMeridian = MER24;
yyHaveZone++;
yyTimezone = ($4 < 0
? -$4 % 100 + (-$4 / 100) * 60
: - ($4 % 100 + ($4 / 100) * 60));
} }
| tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid { | tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid {
yyHour = $1; yyHour = $1;
@@ -211,27 +200,11 @@ time : tUNUMBER tMERIDIAN {
yySeconds = $5; yySeconds = $5;
yyMeridian = $6; yyMeridian = $6;
} }
| tUNUMBER ':' tUNUMBER ':' tUNUMBER tSNUMBER { | tUNUMBER ':' tUNUMBER ':' tUNUMBER {
yyHour = $1; yyHour = $1;
yyMinutes = $3; yyMinutes = $3;
yySeconds = $5; yySeconds = $5;
yyMeridian = MER24; yyMeridian = MER24;
yyHaveZone++;
yyTimezone = ($6 < 0
? -$6 % 100 + (-$6 / 100) * 60
: - ($6 % 100 + ($6 / 100) * 60));
}
;
zone : tZONE {
yyTimezone = $1;
}
| tDAYZONE {
yyTimezone = $1 - 60;
}
|
tZONE tDST {
yyTimezone = $1 - 60;
} }
; ;
@@ -484,91 +457,6 @@ static TABLE const OtherTable[] = {
{ NULL, 0, 0 } { NULL, 0, 0 }
}; };
/* The timezone table. */
static TABLE const TimezoneTable[] = {
{ "gmt", tZONE, HOUR ( 0) }, /* Greenwich Mean */
{ "ut", tZONE, HOUR ( 0) }, /* Universal (Coordinated) */
{ "utc", tZONE, HOUR ( 0) },
{ "wet", tZONE, HOUR ( 0) }, /* Western European */
{ "bst", tDAYZONE, HOUR ( 0) }, /* British Summer */
{ "wat", tZONE, HOUR ( 1) }, /* West Africa */
{ "at", tZONE, HOUR ( 2) }, /* Azores */
{ "ast", tZONE, HOUR ( 4) }, /* Atlantic Standard */
{ "adt", tDAYZONE, HOUR ( 4) }, /* Atlantic Daylight */
{ "est", tZONE, HOUR ( 5) }, /* Eastern Standard */
{ "edt", tDAYZONE, HOUR ( 5) }, /* Eastern Daylight */
{ "cst", tZONE, HOUR ( 6) }, /* Central Standard */
{ "cdt", tDAYZONE, HOUR ( 6) }, /* Central Daylight */
{ "mst", tZONE, HOUR ( 7) }, /* Mountain Standard */
{ "mdt", tDAYZONE, HOUR ( 7) }, /* Mountain Daylight */
{ "pst", tZONE, HOUR ( 8) }, /* Pacific Standard */
{ "pdt", tDAYZONE, HOUR ( 8) }, /* Pacific Daylight */
{ "yst", tZONE, HOUR ( 9) }, /* Yukon Standard */
{ "ydt", tDAYZONE, HOUR ( 9) }, /* Yukon Daylight */
{ "hst", tZONE, HOUR (10) }, /* Hawaii Standard */
{ "hdt", tDAYZONE, HOUR (10) }, /* Hawaii Daylight */
{ "cat", tZONE, HOUR (10) }, /* Central Alaska */
{ "ahst", tZONE, HOUR (10) }, /* Alaska-Hawaii Standard */
{ "nt", tZONE, HOUR (11) }, /* Nome */
{ "idlw", tZONE, HOUR (12) }, /* International Date Line West */
{ "cet", tZONE, -HOUR (1) }, /* Central European */
{ "met", tZONE, -HOUR (1) }, /* Middle European */
{ "mewt", tZONE, -HOUR (1) }, /* Middle European Winter */
{ "mest", tDAYZONE, -HOUR (1) }, /* Middle European Summer */
{ "mesz", tDAYZONE, -HOUR (1) }, /* Middle European Summer */
{ "swt", tZONE, -HOUR (1) }, /* Swedish Winter */
{ "sst", tDAYZONE, -HOUR (1) }, /* Swedish Summer */
{ "fwt", tZONE, -HOUR (1) }, /* French Winter */
{ "fst", tDAYZONE, -HOUR (1) }, /* French Summer */
{ "eet", tZONE, -HOUR (2) }, /* Eastern Europe, USSR Zone 1 */
{ "bt", tZONE, -HOUR (3) }, /* Baghdad, USSR Zone 2 */
{ "zp4", tZONE, -HOUR (4) }, /* USSR Zone 3 */
{ "zp5", tZONE, -HOUR (5) }, /* USSR Zone 4 */
{ "zp6", tZONE, -HOUR (6) }, /* USSR Zone 5 */
{ "wast", tZONE, -HOUR (7) }, /* West Australian Standard */
{ "wadt", tDAYZONE, -HOUR (7) }, /* West Australian Daylight */
{ "cct", tZONE, -HOUR (8) }, /* China Coast, USSR Zone 7 */
{ "jst", tZONE, -HOUR (9) }, /* Japan Standard, USSR Zone 8 */
{ "east", tZONE, -HOUR (10) }, /* Eastern Australian Standard */
{ "eadt", tDAYZONE, -HOUR (10) }, /* Eastern Australian Daylight */
{ "gst", tZONE, -HOUR (10) }, /* Guam Standard, USSR Zone 9 */
{ "nzt", tZONE, -HOUR (12) }, /* New Zealand */
{ "nzst", tZONE, -HOUR (12) }, /* New Zealand Standard */
{ "nzdt", tDAYZONE, -HOUR (12) }, /* New Zealand Daylight */
{ "idle", tZONE, -HOUR (12) }, /* International Date Line East */
{ NULL, 0, 0 }
};
/* Military timezone table. */
static TABLE const MilitaryTable[] = {
{ "a", tZONE, HOUR ( 1) },
{ "b", tZONE, HOUR ( 2) },
{ "c", tZONE, HOUR ( 3) },
{ "d", tZONE, HOUR ( 4) },
{ "e", tZONE, HOUR ( 5) },
{ "f", tZONE, HOUR ( 6) },
{ "g", tZONE, HOUR ( 7) },
{ "h", tZONE, HOUR ( 8) },
{ "i", tZONE, HOUR ( 9) },
{ "k", tZONE, HOUR ( 10) },
{ "l", tZONE, HOUR ( 11) },
{ "m", tZONE, HOUR ( 12) },
{ "n", tZONE, HOUR (- 1) },
{ "o", tZONE, HOUR (- 2) },
{ "p", tZONE, HOUR (- 3) },
{ "q", tZONE, HOUR (- 4) },
{ "r", tZONE, HOUR (- 5) },
{ "s", tZONE, HOUR (- 6) },
{ "t", tZONE, HOUR (- 7) },
{ "u", tZONE, HOUR (- 8) },
{ "v", tZONE, HOUR (- 9) },
{ "w", tZONE, HOUR (-10) },
{ "x", tZONE, HOUR (-11) },
{ "y", tZONE, HOUR (-12) },
{ "z", tZONE, HOUR ( 0) },
{ NULL, 0, 0 }
};
@@ -621,7 +509,6 @@ static int ToYear (int Year)
static int LookupWord (char *buff) static int LookupWord (char *buff)
{ {
register char *p; register char *p;
register char *q;
register const TABLE *tp; register const TABLE *tp;
int i; int i;
bool abbrev; bool abbrev;
@@ -670,16 +557,6 @@ static int LookupWord (char *buff)
} }
} }
for (tp = TimezoneTable; tp->name; tp++)
if (streq(buff, tp->name))
{
yylval.Number = tp->value;
return tp->type;
}
if (streq(buff, "dst"))
return tDST;
for (tp = UnitsTable; tp->name; tp++) for (tp = UnitsTable; tp->name; tp++)
if (streq(buff, tp->name)) if (streq(buff, tp->name))
{ {
@@ -708,32 +585,6 @@ static int LookupWord (char *buff)
return tp->type; return tp->type;
} }
/* Military timezones. */
if (buff[1] == '\0' && isalpha (*buff))
{
for (tp = MilitaryTable; tp->name; tp++)
if (streq(buff, tp->name))
{
yylval.Number = tp->value;
return tp->type;
}
}
/* Drop out any periods and try the timezone table again. */
for (i = 0, p = q = buff; !streq(q, ""); q++)
if (*q != '.')
*p++ = *q;
else
i++;
stpcpy(p, "");
if (0 != i)
for (tp = TimezoneTable; NULL != tp->name; tp++)
if (streq(buff, tp->name))
{
yylval.Number = tp->value;
return tp->type;
}
return tID; return tID;
} }
@@ -796,34 +647,14 @@ yylex (void)
#define TM_YEAR_ORIGIN 1900 #define TM_YEAR_ORIGIN 1900
/* Yield A - B, measured in seconds. */
static long difftm (struct tm *a, struct tm *b)
{
int ay = a->tm_year + (TM_YEAR_ORIGIN - 1);
int by = b->tm_year + (TM_YEAR_ORIGIN - 1);
long days = (
/* difference in day of year */
a->tm_yday - b->tm_yday
/* + intervening leap days */
+ ((ay >> 2) - (by >> 2))
- (ay / 100 - by / 100)
+ ((ay / 100 >> 2) - (by / 100 >> 2))
/* + difference in years * 365 */
+ (long) (ay - by) * 365
);
return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour))
+ (a->tm_min - b->tm_min))
+ (a->tm_sec - b->tm_sec));
}
time_t get_date (const char *p, const time_t *now) time_t get_date (const char *p, const time_t *now)
{ {
struct tm tm, tm0, *tmp; struct tm tm, *tmp;
time_t Start; time_t Start;
yyInput = p; yyInput = p;
Start = now ? *now : time(NULL); Start = now ? *now : time(NULL);
tmp = localtime (&Start); tmp = gmtime(&Start);
yyYear = tmp->tm_year + TM_YEAR_ORIGIN; yyYear = tmp->tm_year + TM_YEAR_ORIGIN;
yyMonth = tmp->tm_mon + 1; yyMonth = tmp->tm_mon + 1;
yyDay = tmp->tm_mday; yyDay = tmp->tm_mday;
@@ -841,10 +672,9 @@ time_t get_date (const char *p, const time_t *now)
yyHaveDay = 0; yyHaveDay = 0;
yyHaveRel = 0; yyHaveRel = 0;
yyHaveTime = 0; yyHaveTime = 0;
yyHaveZone = 0;
if (yyparse () if (yyparse ()
|| yyHaveTime > 1 || yyHaveZone > 1 || yyHaveDate > 1 || yyHaveDay > 1) || yyHaveTime > 1 || yyHaveDate > 1 || yyHaveDay > 1)
return -1; return -1;
tm.tm_year = ToYear (yyYear) - TM_YEAR_ORIGIN + yyRelYear; tm.tm_year = ToYear (yyYear) - TM_YEAR_ORIGIN + yyRelYear;
@@ -866,39 +696,12 @@ time_t get_date (const char *p, const time_t *now)
tm.tm_hour += yyRelHour; tm.tm_hour += yyRelHour;
tm.tm_min += yyRelMinutes; tm.tm_min += yyRelMinutes;
tm.tm_sec += yyRelSeconds; tm.tm_sec += yyRelSeconds;
tm.tm_isdst = -1; tm.tm_isdst = 0;
tm0 = tm;
Start = mktime (&tm); Start = timegm(&tm);
if (Start == (time_t) -1) if (Start == (time_t) -1)
{ {
/* Guard against falsely reporting errors near the time_t boundaries
when parsing times in other time zones. For example, if the min
time_t value is 1970-01-01 00:00:00 UTC and we are 8 hours ahead
of UTC, then the min localtime value is 1970-01-01 08:00:00; if
we apply mktime to 1970-01-01 00:00:00 we will get an error, so
we apply mktime to 1970-01-02 08:00:00 instead and adjust the time
zone by 24 hours to compensate. This algorithm assumes that
there is no DST transition within a day of the time_t boundaries. */
if (yyHaveZone)
{
tm = tm0;
if (tm.tm_year <= EPOCH - TM_YEAR_ORIGIN)
{
tm.tm_mday++;
yyTimezone -= 24 * 60;
}
else
{
tm.tm_mday--;
yyTimezone += 24 * 60;
}
Start = mktime (&tm);
}
if (Start == (time_t) -1)
return Start; return Start;
} }
@@ -906,19 +709,11 @@ time_t get_date (const char *p, const time_t *now)
{ {
tm.tm_mday += ((yyDayNumber - tm.tm_wday + 7) % 7 tm.tm_mday += ((yyDayNumber - tm.tm_wday + 7) % 7
+ 7 * (yyDayOrdinal - (0 < yyDayOrdinal))); + 7 * (yyDayOrdinal - (0 < yyDayOrdinal)));
Start = mktime (&tm); Start = timegm(&tm);
if (Start == (time_t) -1) if (Start == (time_t) -1)
return Start; return Start;
} }
if (yyHaveZone)
{
long delta = yyTimezone * 60L + difftm (&tm, gmtime (&Start));
if ((Start + delta < Start) != (delta < 0))
return -1; /* time_t overflow */
Start += delta;
}
return Start; return Start;
} }
+5 -4
View File
@@ -30,9 +30,10 @@
#include "prototypes.h" #include "prototypes.h"
#include "shadowlog_internal.h" #include "shadowlog_internal.h"
#include "string/sprintf/xasprintf.h" #include "string/sprintf/xasprintf.h"
#include "string/strchr/stpspn.h" #include "string/strcmp/strcaseeq.h"
#include "string/strchr/strrspn.h"
#include "string/strcmp/streq.h" #include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
#include "string/strspn/stprspn.h"
#include "string/strtok/stpsep.h" #include "string/strtok/stpsep.h"
@@ -226,7 +227,7 @@ bool getdef_bool (const char *item)
return false; 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. * Trim trailing whitespace.
*/ */
stpcpy(strrspn(buf, " \t\n"), ""); stpcpy(stprspn(buf, " \t\n"), "");
/* /*
* Break the line into two fields. * Break the line into two fields.
+7 -8
View File
@@ -9,8 +9,7 @@
#include <config.h> #include <config.h>
/* Newer versions of Linux libc already have shadow support. */ #if defined(SHADOWGRP) && !__has_include(<gshadow.h>)
#if defined(SHADOWGRP) && !defined(HAVE_SHADOWGRP) /*{ */
#ident "$Id$" #ident "$Id$"
@@ -55,7 +54,7 @@ void setsgent (void)
if (NULL != shadow) { if (NULL != shadow) {
rewind (shadow); rewind (shadow);
} else { } else {
shadow = fopen (SGROUP_FILE, "r"); shadow = fopen (SGROUP_FILE, "re");
} }
} }
@@ -107,7 +106,7 @@ sgetsgent(const char *string)
if (NULL != cp || i != FIELDS) if (NULL != cp || i != FIELDS)
return NULL; return NULL;
sgroup.sg_name = fields[0]; sgroup.sg_namp = fields[0];
sgroup.sg_passwd = fields[1]; sgroup.sg_passwd = fields[1];
free(sgroup.sg_adm); free(sgroup.sg_adm);
@@ -193,7 +192,7 @@ sgetsgent(const char *string)
setsgent (); setsgent ();
while ((sgrp = getsgent ()) != NULL) { while ((sgrp = getsgent ()) != NULL) {
if (streq(name, sgrp->sg_name)) { if (streq(name, sgrp->sg_namp)) {
break; break;
} }
} }
@@ -219,7 +218,7 @@ int putsgent (const struct sgrp *sgrp, FILE * fp)
} }
/* calculate the required buffer size */ /* 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++) { for (i = 0; (NULL != sgrp->sg_adm) && (NULL != sgrp->sg_adm[i]); i++) {
size += strlen (sgrp->sg_adm[i]) + 1; 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. * 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), ":"); cp = stpcpy(stpcpy(cp, sgrp->sg_passwd), ":");
/* /*
@@ -276,4 +275,4 @@ int putsgent (const struct sgrp *sgrp, FILE * fp)
} }
#else #else
extern int ISO_C_forbids_an_empty_translation_unit; extern int ISO_C_forbids_an_empty_translation_unit;
#endif /*} SHADOWGRP */ #endif // !SHADOWGRP
+17 -14
View File
@@ -1,24 +1,24 @@
/* // SPDX-FileCopyrightText: 1988-1994, Julianne Frances Haugh
* SPDX-FileCopyrightText: 1988 - 1994, Julianne Frances Haugh // SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz
* SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz // SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko
* SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko // SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
* // SPDX-License-Identifier: BSD-3-Clause
* SPDX-License-Identifier: BSD-3-Clause
*/
/*
* $Id$
*/
#ifndef _H_GSHADOW #ifndef SHADOW_INCLUDE_LIB_GSHADOW__H_
#define _H_GSHADOW #define SHADOW_INCLUDE_LIB_GSHADOW__H_
#if __has_include(<gshadow.h>)
# include <gshadow.h>
#else
/* /*
* Shadow group security file structure * Shadow group security file structure
*/ */
struct sgrp { struct sgrp {
char *sg_name; /* group name */ char *sg_namp; /* group name */
char *sg_passwd; /* group password */ char *sg_passwd; /* group password */
char **sg_adm; /* group administrator list */ char **sg_adm; /* group administrator list */
char **sg_mem; /* group membership list */ char **sg_mem; /* group membership list */
@@ -39,4 +39,7 @@ void endsgent (void);
int putsgent (const struct sgrp *, FILE *); int putsgent (const struct sgrp *, FILE *);
#define GSHADOW "/etc/gshadow" #define GSHADOW "/etc/gshadow"
#endif /* ifndef _H_GSHADOW */
#endif // !__has_include(<gshadow.h>)
#endif // include guard
+4 -4
View File
@@ -12,9 +12,9 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <strings.h> #include <strings.h>
#if HAVE_SYS_CAPABILITY_H
#include <sys/prctl.h> #include <sys/prctl.h>
#include <sys/capability.h> #if __has_include(<sys/capability.h>)
# include <sys/capability.h>
#endif #endif
#include "alloc/calloc.h" #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) #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) static inline bool maps_lower_root(int cap, int ranges, const struct map_range *mappings)
{ {
int idx; int idx;
@@ -129,7 +129,7 @@ void write_mapping(int proc_dir_fd, int ranges, const struct map_range *mappings
char *buf, *pos, *end; char *buf, *pos, *end;
int fd; int fd;
#if HAVE_SYS_CAPABILITY_H #if __has_include(<sys/capability.h>)
int cap; int cap;
struct __user_cap_header_struct hdr = {_LINUX_CAPABILITY_VERSION_3, 0}; struct __user_cap_header_struct hdr = {_LINUX_CAPABILITY_VERSION_3, 0};
struct __user_cap_data_struct data[2] = {{0}}; struct __user_cap_data_struct data[2] = {{0}};
+1 -1
View File
@@ -36,8 +36,8 @@
#include "atoi/str2i/str2s.h" #include "atoi/str2i/str2s.h"
#include "atoi/str2i/str2u.h" #include "atoi/str2i/str2u.h"
#include "string/memset/memzero.h" #include "string/memset/memzero.h"
#include "string/strchr/stpspn.h"
#include "string/strcmp/streq.h" #include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
#include "typetraits.h" #include "typetraits.h"
+1 -1
View File
@@ -20,8 +20,8 @@
#include "getdef.h" #include "getdef.h"
#include "prototypes.h" #include "prototypes.h"
#include "string/memset/memzero.h" #include "string/memset/memzero.h"
#include "string/strchr/stpspn.h"
#include "string/strcpy/strtcpy.h" #include "string/strcpy/strtcpy.h"
#include "string/strspn/stpspn.h"
#include "string/strtok/stpsep.h" #include "string/strtok/stpsep.h"
+13 -12
View File
@@ -17,7 +17,6 @@
#include "defines.h" #include "defines.h"
#include "getdef.h" #include "getdef.h"
#include "prototypes.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 * it to the user's terminal at login time. The MOTD_FILE configuration
* option is a colon-delimited list of filenames. * option is a colon-delimited list of filenames.
*/ */
void int
motd(void) motd(void)
{ {
FILE *fp; FILE *fp;
@@ -37,24 +36,26 @@ motd(void)
int c; int c;
motdfile = getdef_str ("MOTD_FILE"); motdfile = getdef_str ("MOTD_FILE");
if (NULL == motdfile) { if (NULL == motdfile)
return; return 0;
}
motdlist = xstrdup (motdfile); motdlist = strdup(motdfile);
if (motdlist == NULL)
return -1;
mb = motdlist; mb = motdlist;
while (NULL != (motdfile = strsep(&mb, ":"))) { while (NULL != (motdfile = strsep(&mb, ":"))) {
fp = fopen (motdfile, "r"); fp = fopen (motdfile, "r");
if (NULL != fp) { if (fp == NULL)
while ((c = getc (fp)) != EOF) { continue;
putchar (c);
} while ((c = getc(fp)) != EOF) {
fclose (fp); putchar(c);
} }
fclose(fp);
} }
fflush (stdout); fflush (stdout);
free (motdlist); free (motdlist);
return 0;
} }
+1 -1
View File
@@ -15,8 +15,8 @@
#include "shadowlog_internal.h" #include "shadowlog_internal.h"
#include "shadowlog.h" #include "shadowlog.h"
#include "string/sprintf/snprintf.h" #include "string/sprintf/snprintf.h"
#include "string/strchr/stpspn.h"
#include "string/strcmp/streq.h" #include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
#include "string/strtok/stpsep.h" #include "string/strtok/stpsep.h"
+3 -2
View File
@@ -6,11 +6,12 @@
*/ */
#include <config.h> #include <config.h>
#include <security/pam_appl.h> #include <security/pam_appl.h>
#ifdef HAVE_SECURITY_PAM_MISC_H #if __has_include(<security/pam_misc.h>)
# include <security/pam_misc.h> # include <security/pam_misc.h>
#endif #endif
#ifdef HAVE_SECURITY_OPENPAM_H #if __has_include(<security/openpam.h>)
# include <security/openpam.h> # include <security/openpam.h>
#endif #endif
+6 -3
View File
@@ -36,7 +36,7 @@
#include "commonio.h" #include "commonio.h"
/* addgrps.c */ /* addgrps.c */
#if defined (HAVE_SETGROUPS) && ! defined (USE_PAM) #if !defined(USE_PAM)
extern int add_groups (const char *); extern int add_groups (const char *);
#endif #endif
@@ -189,6 +189,9 @@ extern void audit_logger (int type, const char *pgname, const char *op,
const char *name, unsigned int id, const char *name, unsigned int id,
shadow_audit_result result); shadow_audit_result result);
void audit_logger_message (const char *message, shadow_audit_result result); void audit_logger_message (const char *message, shadow_audit_result result);
void audit_logger_with_group(int type, const char *op, const char *name,
id_t id, const char *grp_type, const char *grp,
shadow_audit_result result);
#endif #endif
/* limits.c */ /* limits.c */
@@ -222,7 +225,7 @@ extern void login_prompt (char *, int);
extern void mailcheck (void); extern void mailcheck (void);
/* motd.c */ /* motd.c */
extern void motd (void); extern int motd(void);
/* myname.c */ /* myname.c */
extern /*@null@*//*@only@*/struct passwd *get_my_pwent (void); extern /*@null@*//*@only@*/struct passwd *get_my_pwent (void);
@@ -384,7 +387,7 @@ extern int del_seuser(const char *login_name);
/* setugid.c */ /* setugid.c */
extern int setup_groups (const struct passwd *info); extern int setup_groups (const struct passwd *info);
extern int change_uid (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); extern int setup_uid_gid (const struct passwd *info, bool is_console);
#else #else
extern int setup_uid_gid (const struct passwd *info); extern int setup_uid_gid (const struct passwd *info);
+15 -48
View File
@@ -48,16 +48,15 @@ static const char *PROMPT = gettext_noop ("%s's Password: ");
* compared. * compared.
*/ */
int pw_auth (const char *cipher, int
const char *user, pw_auth(const char *cipher, const char *user)
int reason,
/*@null@*/const char *input)
{ {
int retval; int retval;
char prompt[1024]; char prompt[1024];
char *clear = NULL; char *clear;
const char *cp; const char *cp;
const char *encrypted; const char *encrypted;
const char *input;
#ifdef SKEY #ifdef SKEY
bool use_skey = false; bool use_skey = false;
@@ -65,35 +64,6 @@ int pw_auth (const char *cipher,
struct skey skey; struct skey skey;
#endif #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: * WARNING:
* *
@@ -128,25 +98,22 @@ int pw_auth (const char *cipher,
#endif #endif
/* /*
* Prompt for the password as required. FTPD and REXECD both * Prompt for the password as required.
* get the cleartext password for us.
*/ */
if ((PW_FTP != reason) && (PW_REXEC != reason) && (NULL == input)) { cp = getdef_str ("LOGIN_STRING");
cp = getdef_str ("LOGIN_STRING"); if (NULL == cp) {
if (NULL == cp) { cp = _(PROMPT);
cp = _(PROMPT); }
}
#ifdef SKEY #ifdef SKEY
if (use_skey) { if (use_skey) {
printf ("[%s]\n", challenge_info); printf ("[%s]\n", challenge_info);
} }
#endif #endif
SNPRINTF(prompt, cp, user); SNPRINTF(prompt, cp, user);
clear = agetpass(prompt); clear = agetpass(prompt);
input = (clear == NULL) ? "" : clear; input = (clear == NULL) ? "" : clear;
}
/* /*
* Convert the cleartext password into a ciphertext string. * Convert the cleartext password into a ciphertext string.
+1 -32
View File
@@ -7,42 +7,11 @@
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
/*
* $Id$
*/
#ifndef _PWAUTH_H #ifndef _PWAUTH_H
#define _PWAUTH_H #define _PWAUTH_H
#ifndef USE_PAM #ifndef USE_PAM
int pw_auth (const char *cipher, int pw_auth(const char *cipher, const char *user);
const char *user,
int flag,
/*@null@*/const char *input);
#endif /* !USE_PAM */ #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 */ #endif /* _PWAUTH_H */
+1 -1
View File
@@ -28,7 +28,7 @@ void passwd_check (const char *user, const char *passwd, MAYBE_UNUSED const char
if (NULL != sp) { if (NULL != sp) {
passwd = sp->sp_pwdp; 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)); SYSLOG ((LOG_WARN, "incorrect password for `%s'", user));
(void) sleep (1); (void) sleep (1);
fprintf (log_get_logfd(), _("Incorrect password for %s.\n"), user); fprintf (log_get_logfd(), _("Incorrect password for %s.\n"), user);
+1 -1
View File
@@ -32,7 +32,7 @@ static int run_part(char *script_path, const char *name, const char *action)
setenv("SUBJECT",name,1); setenv("SUBJECT",name,1);
execv(script_path,args); execv(script_path,args);
fprintf(shadow_logfd, "execv: %s\n", strerror(errno)); fprintf(shadow_logfd, "execv: %s\n", strerror(errno));
exit(1); _exit(1);
} }
pid_status = wait(&wait_status); pid_status = wait(&wait_status);
+13
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
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
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
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
@@ -4,7 +4,4 @@
#include <config.h> #include <config.h>
#include "string/strchr/strrspn.h" #include "search/l/lsearch.h"
extern inline char *strrspn(char *restrict s, const char *restrict accept);
+30
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
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
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
+5 -5
View File
@@ -47,7 +47,7 @@ int setup_groups (const struct passwd *info)
closelog (); closelog ();
return -1; return -1;
} }
#ifdef HAVE_INITGROUPS
/* /*
* For systems which support multiple concurrent groups, go get * For systems which support multiple concurrent groups, go get
* the group set from the /etc/group file. * the group set from the /etc/group file.
@@ -60,7 +60,7 @@ int setup_groups (const struct passwd *info)
closelog (); closelog ();
return -1; return -1;
} }
#endif
return 0; return 0;
} }
@@ -96,7 +96,7 @@ int change_uid (const struct passwd *info)
* Returns 0 on success, or -1 on failure. * 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) int setup_uid_gid (const struct passwd *info, bool is_console)
#else #else
int setup_uid_gid (const struct passwd *info) int setup_uid_gid (const struct passwd *info)
@@ -106,7 +106,7 @@ int setup_uid_gid (const struct passwd *info)
return -1; return -1;
} }
#if defined (HAVE_INITGROUPS) && ! defined (USE_PAM) #if !defined(USE_PAM)
if (is_console) { if (is_console) {
const char *cp = getdef_str ("CONSOLE_GROUPS"); const char *cp = getdef_str ("CONSOLE_GROUPS");
@@ -114,7 +114,7 @@ int setup_uid_gid (const struct passwd *info)
perror ("Warning: add_groups"); perror ("Warning: add_groups");
} }
} }
#endif /* HAVE_INITGROUPS && !USE_PAM*/ #endif // !USE_PAM
if (change_uid (info) < 0) { if (change_uid (info) < 0) {
return -1; return -1;
+1 -1
View File
@@ -27,9 +27,9 @@
#include "getdef.h" #include "getdef.h"
#include "shadowlog.h" #include "shadowlog.h"
#include "string/sprintf/xasprintf.h" #include "string/sprintf/xasprintf.h"
#include "string/strchr/stpspn.h"
#include "string/strcmp/streq.h" #include "string/strcmp/streq.h"
#include "string/strdup/xstrdup.h" #include "string/strdup/xstrdup.h"
#include "string/strspn/stpspn.h"
#include "string/strtok/stpsep.h" #include "string/strtok/stpsep.h"
+10 -10
View File
@@ -36,9 +36,9 @@
/* Do the same as the other _dup function, even if we know the /* Do the same as the other _dup function, even if we know the
* structure. */ * structure. */
/*@-mustfreeonly@*/ /*@-mustfreeonly@*/
sg->sg_name = strdup (sgent->sg_name); sg->sg_namp = strdup (sgent->sg_namp);
/*@=mustfreeonly@*/ /*@=mustfreeonly@*/
if (NULL == sg->sg_name) { if (NULL == sg->sg_namp) {
free (sg); free (sg);
return NULL; return NULL;
} }
@@ -46,7 +46,7 @@
sg->sg_passwd = strdup (sgent->sg_passwd); sg->sg_passwd = strdup (sgent->sg_passwd);
/*@=mustfreeonly@*/ /*@=mustfreeonly@*/
if (NULL == sg->sg_passwd) { if (NULL == sg->sg_passwd) {
free (sg->sg_name); free (sg->sg_namp);
free (sg); free (sg);
return NULL; return NULL;
} }
@@ -57,7 +57,7 @@
/*@=mustfreeonly@*/ /*@=mustfreeonly@*/
if (NULL == sg->sg_adm) { if (NULL == sg->sg_adm) {
free (sg->sg_passwd); free (sg->sg_passwd);
free (sg->sg_name); free (sg->sg_namp);
free (sg); free (sg);
return NULL; return NULL;
} }
@@ -69,7 +69,7 @@
} }
free (sg->sg_adm); free (sg->sg_adm);
free (sg->sg_passwd); free (sg->sg_passwd);
free (sg->sg_name); free (sg->sg_namp);
free (sg); free (sg);
return NULL; return NULL;
} }
@@ -86,7 +86,7 @@
} }
free (sg->sg_adm); free (sg->sg_adm);
free (sg->sg_passwd); free (sg->sg_passwd);
free (sg->sg_name); free (sg->sg_namp);
free (sg); free (sg);
return NULL; return NULL;
} }
@@ -102,7 +102,7 @@
} }
free (sg->sg_adm); free (sg->sg_adm);
free (sg->sg_passwd); free (sg->sg_passwd);
free (sg->sg_name); free (sg->sg_namp);
free (sg); free (sg);
return NULL; return NULL;
} }
@@ -131,7 +131,7 @@ void
sgr_free(/*@only@*/struct sgrp *sgent) sgr_free(/*@only@*/struct sgrp *sgent)
{ {
size_t i; size_t i;
free (sgent->sg_name); free (sgent->sg_namp);
if (NULL != sgent->sg_passwd) if (NULL != sgent->sg_passwd)
free(strzero(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; const struct sgrp *gr = ent;
return gr->sg_name; return gr->sg_namp;
} }
static void *gshadow_parse (const char *line) 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; const struct sgrp *sg = ent;
if ( (NULL == sg) if ( (NULL == sg)
|| (valid_field (sg->sg_name, ":\n") == -1) || (valid_field (sg->sg_namp, ":\n") == -1)
|| (valid_field (sg->sg_passwd, ":\n") == -1)) { || (valid_field (sg->sg_passwd, ":\n") == -1)) {
return -1; return -1;
} }
+1 -1
View File
@@ -41,7 +41,7 @@ void setspent (void)
if (NULL != shadow) { if (NULL != shadow) {
rewind (shadow); rewind (shadow);
}else { }else {
shadow = fopen (SHADOW_FILE, "r"); shadow = fopen (SHADOW_FILE, "re");
} }
} }
+13
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);
+52
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
+2
View File
@@ -11,10 +11,12 @@
#include <config.h> #include <config.h>
#include <limits.h> #include <limits.h>
#include <sys/types.h>
#include "must_be.h" #include "must_be.h"
#define ssizeof(x) ((ssize_t) sizeof(x))
#define memberof(T, member) ((T){}.member) #define memberof(T, member) ((T){}.member)
#define WIDTHOF(x) (sizeof(x) * CHAR_BIT) #define WIDTHOF(x) (sizeof(x) * CHAR_BIT)
#define SIZEOF_ARRAY(a) (sizeof(a) + must_be_array(a)) #define SIZEOF_ARRAY(a) (sizeof(a) + must_be_array(a))
+2 -2
View File
@@ -35,11 +35,11 @@ run_command(const char *cmd, const char *argv[],
(void) execve (cmd, (char * const *) argv, (void) execve (cmd, (char * const *) argv,
(char * const *) envp); (char * const *) envp);
if (ENOENT == errno) { if (ENOENT == errno) {
exit (E_CMD_NOTFOUND); _exit (E_CMD_NOTFOUND);
} }
fprintf (shadow_logfd, "%s: cannot execute %s: %s\n", fprintf (shadow_logfd, "%s: cannot execute %s: %s\n",
shadow_progname, cmd, strerror (errno)); shadow_progname, cmd, strerror (errno));
exit (E_CMD_NOEXEC); _exit (E_CMD_NOEXEC);
} else if ((pid_t)-1 == pid) { } else if ((pid_t)-1 == pid) {
fprintf (shadow_logfd, "%s: cannot execute %s: %s\n", fprintf (shadow_logfd, "%s: cannot execute %s: %s\n",
shadow_progname, cmd, strerror (errno)); shadow_progname, cmd, strerror (errno));
+12
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);
+32
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
+1
View File
@@ -18,6 +18,7 @@ ATTR_STRING(1)
inline size_t strchrcnt(const char *s, char c); inline size_t strchrcnt(const char *s, char c);
// string character count
inline size_t inline size_t
strchrcnt(const char *s, char c) strchrcnt(const char *s, char c)
{ {
+12
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);
+37
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
+1
View File
@@ -13,6 +13,7 @@
#include "attr.h" #include "attr.h"
// string null-byte
// Similar to strlen(3), but return a pointer instead of an offset. // Similar to strlen(3), but return a pointer instead of an offset.
#define strnul(s) \ #define strnul(s) \
({ \ ({ \
-38
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
+12
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);
+30
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
+1
View File
@@ -19,6 +19,7 @@ ATTR_STRING(2)
inline bool streq(const char *s1, const char *s2); inline bool streq(const char *s1, const char *s2);
// strings equal
/* Return true if s1 and s2 compare equal. */ /* Return true if s1 and s2 compare equal. */
inline bool inline bool
streq(const char *s1, const char *s2) streq(const char *s1, const char *s2)
+1
View File
@@ -13,6 +13,7 @@
#include "sizeof.h" #include "sizeof.h"
// string format time
#define STRFTIME(dst, fmt, tm) strftime(dst, NITEMS(dst), fmt, tm) #define STRFTIME(dst, fmt, tm) strftime(dst, NITEMS(dst), fmt, tm)
+7
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"
+25
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
+7
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"
+27
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
@@ -4,4 +4,4 @@
#include <config.h> #include <config.h>
#include "string/strchr/stpspn.h" #include "string/strspn/stpspn.h"
@@ -2,8 +2,8 @@
// SPDX-License-Identifier: BSD-3-Clause // SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_STRING_STRCHR_STPSPN_H_ #ifndef SHADOW_INCLUDE_LIB_STRING_STRSPN_STPSPN_H_
#define SHADOW_INCLUDE_LIB_STRING_STRCHR_STPSPN_H_ #define SHADOW_INCLUDE_LIB_STRING_STRSPN_STPSPN_H_
#include <config.h> #include <config.h>
@@ -13,6 +13,7 @@
#include "attr.h" #include "attr.h"
// string returns-pointer substring prefix length
// Similar to strspn(3), but return a pointer instead of an offset. // Similar to strspn(3), but return a pointer instead of an offset.
// Similar to strchrnul(3), but search for any bytes not in 'accept'. // Similar to strchrnul(3), but search for any bytes not in 'accept'.
#define stpspn(s, accept) \ #define stpspn(s, accept) \
+12
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);
+39
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
+12
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);
+39
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
+1
View File
@@ -17,6 +17,7 @@ ATTR_STRING(1) ATTR_STRING(2)
inline char *stpsep(char *s, const char *delim); inline char *stpsep(char *s, const char *delim);
// string returns-pointer separate
// Similar to strsep(3), // Similar to strsep(3),
// but return the next token, and don't update the input pointer. // but return the next token, and don't update the input pointer.
// Similar to strtok(3), // Similar to strtok(3),
+4 -9
View File
@@ -14,8 +14,9 @@
#include "atoi/str2i/str2s.h" #include "atoi/str2i/str2s.h"
#include "getdate.h" #include "getdate.h"
#include "prototypes.h" #include "prototypes.h"
#include "string/strchr/stpspn.h" #include "string/ctype/strisascii/strisdigit.h"
#include "string/strcmp/streq.h" #include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
/* /*
@@ -35,7 +36,6 @@
long strtoday (const char *str) long strtoday (const char *str)
{ {
time_t t; time_t t;
bool isnum = true;
const char *s = str; const char *s = str;
/* /*
@@ -54,14 +54,9 @@ long strtoday (const char *str)
s++; s++;
} }
s = stpspn(s, " "); s = stpspn(s, " ");
while (isnum && !streq(s, "")) { if (strisdigit(s)) {
if (!isdigit (*s)) {
isnum = false;
}
s++;
}
if (isnum) {
long retdate; long retdate;
if (str2sl(&retdate, str) == -1) if (str2sl(&retdate, str) == -1)
return -2; return -2;
return retdate; return retdate;
+2 -11
View File
@@ -22,6 +22,7 @@
#include "alloc/realloc.h" #include "alloc/realloc.h"
#include "alloc/reallocf.h" #include "alloc/reallocf.h"
#include "atoi/str2i/str2u.h" #include "atoi/str2i/str2u.h"
#include "string/ctype/strisascii/strisdigit.h"
#include "string/sprintf/snprintf.h" #include "string/sprintf/snprintf.h"
#include "string/strcmp/streq.h" #include "string/strcmp/streq.h"
@@ -926,22 +927,12 @@ out:
return count; 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) static int append_uids(uid_t **uids, const char *owner, int n)
{ {
int i; int i;
uid_t owner_uid; uid_t owner_uid;
if (all_digits(owner)) { if (strisdigit(owner)) {
i = sscanf(owner, "%d", &owner_uid); i = sscanf(owner, "%d", &owner_uid);
if (i != 1) { if (i != 1) {
// should not happen // should not happen
+1 -1
View File
@@ -38,7 +38,7 @@ day_to_str(size_t size, char buf[size], long day)
return; return;
} }
if (localtime_r(&date, &tm) == NULL) { if (gmtime_r(&date, &tm) == NULL) {
strtcpy(buf, "future", size); strtcpy(buf, "future", size);
return; return;
} }
+1 -1
View File
@@ -39,7 +39,6 @@ man_MANS = \
man1/sg.1 \ man1/sg.1 \
man3/shadow.3 \ man3/shadow.3 \
man5/shadow.5 \ man5/shadow.5 \
man5/suauth.5 \
man8/useradd.8 \ man8/useradd.8 \
man8/userdel.8 \ man8/userdel.8 \
man8/usermod.8 \ man8/usermod.8 \
@@ -57,6 +56,7 @@ man_nopam = \
if WITH_SU if WITH_SU
man_MANS += man1/su.1 man_MANS += man1/su.1
man_nopam += man5/suauth.5
endif endif
if !USE_PAM if !USE_PAM
+13 -15
View File
@@ -89,11 +89,12 @@ build_triplet = @build@
host_triplet = @host@ host_triplet = @host@
@ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8 @ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8
@WITH_SU_TRUE@am__append_2 = man1/su.1 @WITH_SU_TRUE@am__append_2 = man1/su.1
@USE_PAM_FALSE@am__append_3 = $(man_nopam) @WITH_SU_TRUE@am__append_3 = man5/suauth.5
@ENABLE_SUBIDS_TRUE@am__append_4 = $(man_subids) @USE_PAM_FALSE@am__append_4 = $(man_nopam)
@ENABLE_LASTLOG_TRUE@am__append_5 = lastlog.8.xml @ENABLE_SUBIDS_TRUE@am__append_5 = $(man_subids)
@USE_PAM_TRUE@am__append_6 = $(man_nopam) @ENABLE_LASTLOG_TRUE@am__append_6 = lastlog.8.xml
@ENABLE_SUBIDS_FALSE@am__append_7 = $(man_subids) @USE_PAM_TRUE@am__append_7 = $(man_nopam)
@ENABLE_SUBIDS_FALSE@am__append_8 = $(man_subids)
subdir = man subdir = man
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.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 \ man8/logoutd.8 man1/newgrp.1 man8/newusers.8 man8/nologin.8 \
man1/passwd.1 man5/passwd.5 man8/pwck.8 man8/pwconv.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 \ 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/useradd.8 man8/userdel.8 man8/usermod.8 man8/vigr.8 \
man8/vigr.8 man8/vipw.8 $(am__append_1) $(am__append_2) \ man8/vipw.8 $(am__append_1) $(am__append_2) $(am__append_4) \
$(am__append_3) $(am__append_4) $(am__append_5)
man_nopam = \ man_nopam = man5/limits.5 man5/login.access.5 man5/porttime.5 \
man5/limits.5 \ $(am__append_3)
man5/login.access.5 \
man5/porttime.5
man_subids = \ man_subids = \
man1/getsubids.1 \ man1/getsubids.1 \
man1/newgidmap.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 \ 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 \ 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 \ 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 = \ login_defs_v = \
BCRYPT_MIN_ROUNDS.xml \ BCRYPT_MIN_ROUNDS.xml \
CHFN_AUTH.xml \ CHFN_AUTH.xml \
@@ -518,7 +516,7 @@ login_defs_v = \
EXTRA_DIST = $(man_MANS) $(man_XMANS) config.xml $(addprefix \ EXTRA_DIST = $(man_MANS) $(man_XMANS) config.xml $(addprefix \
login.defs.d/,$(login_defs_v)) man8/sulogin.8 sulogin.8.xml \ login.defs.d/,$(login_defs_v)) man8/sulogin.8 sulogin.8.xml \
generate_mans.mak generate_translations.mak its.rules \ 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_FALSE@VENDORDIR_COND = without_vendordir
@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_TRUE@VENDORDIR_COND = with_vendordir @ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_TRUE@VENDORDIR_COND = with_vendordir
@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@PAM_COND = no_pam @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@PAM_COND = no_pam
+1 -2
View File
@@ -208,8 +208,7 @@
found under the directory <replaceable>PREFIX_DIR</replaceable>. found under the directory <replaceable>PREFIX_DIR</replaceable>.
This option does not chroot and is intended for preparing a cross-compilation This option does not chroot and is intended for preparing a cross-compilation
target. Some limitations: NIS and LDAP users/groups are target. Some limitations: NIS and LDAP users/groups are
not verified. PAM authentication is using the host files. not verified. No SELINUX support.
No SELINUX support.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
+1 -1
View File
@@ -1,2 +1,2 @@
<!ENTITY GROUP_NAME_MAX_LENGTH '32'> <!ENTITY GROUP_NAME_MAX_LENGTH '32'>
<!ENTITY SHADOW_UTILS_VERSION '4.17.1'> <!ENTITY SHADOW_UTILS_VERSION '4.17.4'>
+3 -3
View File
@@ -2,12 +2,12 @@
.\" Title: chfn .\" Title: chfn
.\" Author: Julianne Frances Haugh .\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024 .\" Date: 19/03/2025
.\" Manual: User Commands .\" Manual: User Commands
.\" Source: shadow-utils 4.17.1 .\" Source: shadow-utils 4.17.4
.\" Language: Danish .\" Language: Danish
.\" .\"
.TH "CHFN" "1" "31/12/2024" "shadow\-utils 4\&.17\&.1" "User Commands" .TH "CHFN" "1" "19/03/2025" "shadow\-utils 4\&.17\&.4" "User Commands"
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
.\" * Define some portability stuff .\" * Define some portability stuff
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
+3 -3
View File
@@ -2,12 +2,12 @@
.\" Title: newgrp .\" Title: newgrp
.\" Author: Julianne Frances Haugh .\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024 .\" Date: 19/03/2025
.\" Manual: User Commands .\" Manual: User Commands
.\" Source: shadow-utils 4.17.1 .\" Source: shadow-utils 4.17.4
.\" Language: Danish .\" Language: Danish
.\" .\"
.TH "NEWGRP" "1" "31/12/2024" "shadow\-utils 4\&.17\&.1" "User Commands" .TH "NEWGRP" "1" "19/03/2025" "shadow\-utils 4\&.17\&.4" "User Commands"
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
.\" * Define some portability stuff .\" * Define some portability stuff
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
+3 -3
View File
@@ -2,12 +2,12 @@
.\" Title: sg .\" Title: sg
.\" Author: Julianne Frances Haugh .\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024 .\" Date: 19/03/2025
.\" Manual: User Commands .\" Manual: User Commands
.\" Source: shadow-utils 4.17.1 .\" Source: shadow-utils 4.17.4
.\" Language: Danish .\" Language: Danish
.\" .\"
.TH "SG" "1" "31/12/2024" "shadow\-utils 4\&.17\&.1" "User Commands" .TH "SG" "1" "19/03/2025" "shadow\-utils 4\&.17\&.4" "User Commands"
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
.\" * Define some portability stuff .\" * Define some portability stuff
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
+3 -3
View File
@@ -2,12 +2,12 @@
.\" Title: gshadow .\" Title: gshadow
.\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net> .\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net>
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024 .\" Date: 19/03/2025
.\" Manual: File Formats and Configuration Files .\" Manual: File Formats and Configuration Files
.\" Source: shadow-utils 4.17.1 .\" Source: shadow-utils 4.17.4
.\" Language: Danish .\" Language: Danish
.\" .\"
.TH "GSHADOW" "5" "31/12/2024" "shadow\-utils 4\&.17\&.1" "File Formats and Configuration" .TH "GSHADOW" "5" "19/03/2025" "shadow\-utils 4\&.17\&.4" "File Formats and Configuration"
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
.\" * Define some portability stuff .\" * Define some portability stuff
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
+3 -3
View File
@@ -2,12 +2,12 @@
.\" Title: groupdel .\" Title: groupdel
.\" Author: Julianne Frances Haugh .\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024 .\" Date: 19/03/2025
.\" Manual: System Management Commands .\" Manual: System Management Commands
.\" Source: shadow-utils 4.17.1 .\" Source: shadow-utils 4.17.4
.\" Language: Danish .\" Language: Danish
.\" .\"
.TH "GROUPDEL" "8" "31/12/2024" "shadow\-utils 4\&.17\&.1" "System Management Commands" .TH "GROUPDEL" "8" "19/03/2025" "shadow\-utils 4\&.17\&.4" "System Management Commands"
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
.\" * Define some portability stuff .\" * Define some portability stuff
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
+3 -3
View File
@@ -2,12 +2,12 @@
.\" Title: logoutd .\" Title: logoutd
.\" Author: Julianne Frances Haugh .\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024 .\" Date: 19/03/2025
.\" Manual: System Management Commands .\" Manual: System Management Commands
.\" Source: shadow-utils 4.17.1 .\" Source: shadow-utils 4.17.4
.\" Language: Danish .\" Language: Danish
.\" .\"
.TH "LOGOUTD" "8" "31/12/2024" "shadow\-utils 4\&.17\&.1" "System Management Commands" .TH "LOGOUTD" "8" "19/03/2025" "shadow\-utils 4\&.17\&.4" "System Management Commands"
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
.\" * Define some portability stuff .\" * Define some portability stuff
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
+3 -3
View File
@@ -2,12 +2,12 @@
.\" Title: nologin .\" Title: nologin
.\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net> .\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net>
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024 .\" Date: 19/03/2025
.\" Manual: System Management Commands .\" Manual: System Management Commands
.\" Source: shadow-utils 4.17.1 .\" Source: shadow-utils 4.17.4
.\" Language: Danish .\" Language: Danish
.\" .\"
.TH "NOLOGIN" "8" "31/12/2024" "shadow\-utils 4\&.17\&.1" "System Management Commands" .TH "NOLOGIN" "8" "19/03/2025" "shadow\-utils 4\&.17\&.4" "System Management Commands"
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
.\" * Define some portability stuff .\" * Define some portability stuff
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
+3 -3
View File
@@ -2,12 +2,12 @@
.\" Title: vipw .\" Title: vipw
.\" Author: Marek Micha\(/lkiewicz .\" Author: Marek Micha\(/lkiewicz
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31/12/2024 .\" Date: 19/03/2025
.\" Manual: System Management Commands .\" Manual: System Management Commands
.\" Source: shadow-utils 4.17.1 .\" Source: shadow-utils 4.17.4
.\" Language: Danish .\" Language: Danish
.\" .\"
.TH "VIPW" "8" "31/12/2024" "shadow\-utils 4\&.17\&.1" "System Management Commands" .TH "VIPW" "8" "19/03/2025" "shadow\-utils 4\&.17\&.4" "System Management Commands"
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
.\" * Define some portability stuff .\" * Define some portability stuff
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
+4 -4
View File
@@ -2,12 +2,12 @@
.\" Title: chage .\" Title: chage
.\" Author: Julianne Frances Haugh .\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024 .\" Date: 19.03.2025
.\" Manual: User Commands .\" Manual: User Commands
.\" Source: shadow-utils 4.17.1 .\" Source: shadow-utils 4.17.4
.\" Language: German .\" Language: German
.\" .\"
.TH "CHAGE" "1" "31.12.2024" "shadow\-utils 4\&.17\&.1" "User Commands" .TH "CHAGE" "1" "19.03.2025" "shadow\-utils 4\&.17\&.4" "User Commands"
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
.\" * Define some portability stuff .\" * Define some portability stuff
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
@@ -139,7 +139,7 @@ directory\&. Only absolute paths are supported\&.
\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR
.RS 4 .RS 4
Apply changes to configuration files under the root filesystem found under the directory 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 .RE
.PP .PP
\fB\-W\fR, \fB\-\-warndays\fR\ \&\fIWARN_DAYS\fR \fB\-W\fR, \fB\-\-warndays\fR\ \&\fIWARN_DAYS\fR
+3 -3
View File
@@ -2,12 +2,12 @@
.\" Title: chfn .\" Title: chfn
.\" Author: Julianne Frances Haugh .\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024 .\" Date: 19.03.2025
.\" Manual: User Commands .\" Manual: User Commands
.\" Source: shadow-utils 4.17.1 .\" Source: shadow-utils 4.17.4
.\" Language: German .\" Language: German
.\" .\"
.TH "CHFN" "1" "31.12.2024" "shadow\-utils 4\&.17\&.1" "User Commands" .TH "CHFN" "1" "19.03.2025" "shadow\-utils 4\&.17\&.4" "User Commands"
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
.\" * Define some portability stuff .\" * Define some portability stuff
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
+3 -3
View File
@@ -2,12 +2,12 @@
.\" Title: chsh .\" Title: chsh
.\" Author: Julianne Frances Haugh .\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024 .\" Date: 19.03.2025
.\" Manual: User Commands .\" Manual: User Commands
.\" Source: shadow-utils 4.17.1 .\" Source: shadow-utils 4.17.4
.\" Language: German .\" Language: German
.\" .\"
.TH "CHSH" "1" "31.12.2024" "shadow\-utils 4\&.17\&.1" "User Commands" .TH "CHSH" "1" "19.03.2025" "shadow\-utils 4\&.17\&.4" "User Commands"
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
.\" * Define some portability stuff .\" * Define some portability stuff
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
+3 -3
View File
@@ -2,12 +2,12 @@
.\" Title: expiry .\" Title: expiry
.\" Author: Julianne Frances Haugh .\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024 .\" Date: 19.03.2025
.\" Manual: User Commands .\" Manual: User Commands
.\" Source: shadow-utils 4.17.1 .\" Source: shadow-utils 4.17.4
.\" Language: German .\" Language: German
.\" .\"
.TH "EXPIRY" "1" "31.12.2024" "shadow\-utils 4\&.17\&.1" "User Commands" .TH "EXPIRY" "1" "19.03.2025" "shadow\-utils 4\&.17\&.4" "User Commands"
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
.\" * Define some portability stuff .\" * Define some portability stuff
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
+3 -3
View File
@@ -2,12 +2,12 @@
.\" Title: gpasswd .\" Title: gpasswd
.\" Author: Rafal Maszkowski .\" Author: Rafal Maszkowski
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 31.12.2024 .\" Date: 19.03.2025
.\" Manual: User Commands .\" Manual: User Commands
.\" Source: shadow-utils 4.17.1 .\" Source: shadow-utils 4.17.4
.\" Language: German .\" Language: German
.\" .\"
.TH "GPASSWD" "1" "31.12.2024" "shadow\-utils 4\&.17\&.1" "User Commands" .TH "GPASSWD" "1" "19.03.2025" "shadow\-utils 4\&.17\&.4" "User Commands"
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------
.\" * Define some portability stuff .\" * Define some portability stuff
.\" ----------------------------------------------------------------- .\" -----------------------------------------------------------------

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