Compare commits

...

12 Commits

Author SHA1 Message Date
Chris Hofstaedtler 302d4ef809 Update changelog for 1:4.17.3-2 release 2025-03-16 14:52:53 +01:00
Chris Hofstaedtler 73d57c09a1 d/gbp.conf: enable pristine-tar 2025-03-16 14:52:53 +01:00
Chris Hofstaedtler 6360940c7f Refresh patches 2025-03-16 13:48:32 +01:00
Chris Hofstaedtler 0e6f426896 Do not warn about useradd --system with Debian-globally allocated uids 2025-03-16 13:48:32 +01:00
Chris Hofstaedtler b56ac5f36b Update changelog for 1:4.17.3-1 release 2025-02-24 23:26:20 +01:00
Chris Hofstaedtler 193bcdacf8 Explicitly pass {s,}bindir to configure
Avoids upstream hacks in configure.

Gbp-Dch: full
2025-02-24 23:26:20 +01:00
Chris Hofstaedtler 47ba166e47 Refresh patches and include upstream patch for getdate
Include https://github.com/shadow-maint/shadow/pull/1214 to fix
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1095430 in the
way upstream intends to fix it.

Gbp-Dch: full
2025-02-24 23:21:38 +01:00
Chris Hofstaedtler df34dc0271 Update upstream source from tag 'upstream/4.17.3'
Update to upstream version '4.17.3'
with Debian dir 0622af0116
2025-02-24 22:57:12 +01:00
Chris Hofstaedtler a475f464e0 New upstream version 4.17.3 2025-02-24 22:57:12 +01:00
Chris Hofstaedtler 03ab41b0a9 Update changelog for 1:4.17.2-6 release 2025-02-24 12:16:51 +01:00
Chris Hofstaedtler da9ad99cc7 configure: always pick /usr/bin/passwd
Improve reproducibility, without Build-Depend:ing on ourselves.

Thanks: Jochen Sprickerhof <jspricke@debian.org>
2025-02-24 12:02:34 +01:00
Chris Hofstaedtler 677d61be14 d/rules: ensure lib/getdate.c gets rebuilt 2025-02-18 12:47:27 +01:00
565 changed files with 7516 additions and 4204 deletions
-52
View File
@@ -20,10 +20,6 @@
/* Path for faillog file. */
#undef FAILLOG_FILE
/* Define to the type of elements in the array set by `getgroups'. Usually
this is either `int' or `gid_t'. */
#undef GETGROUPS_T
/* max group name length */
#undef GROUP_NAME_MAX_LENGTH
@@ -53,9 +49,6 @@
the CoreFoundation framework. */
#undef HAVE_CFPREFERENCESCOPYAPPVALUE
/* Define to 1 if you have the <crypt.h> header file. */
#undef HAVE_CRYPT_H
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
#undef HAVE_DCGETTEXT
@@ -119,24 +112,15 @@
/* Define to 1 if you have the `getusershell' function. */
#undef HAVE_GETUSERSHELL
/* Define to 1 if you have the <gshadow.h> header file. */
#undef HAVE_GSHADOW_H
/* Define if you have the iconv() function and it works. */
#undef HAVE_ICONV
/* Define to 1 if you have the `initgroups' function. */
#undef HAVE_INITGROUPS
/* Define to 1 if you have the `innetgr' function. */
#undef HAVE_INNETGR
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the <lastlog.h> header file. */
#undef HAVE_LASTLOG_H
/* Define to 1 if you have the `lckpwdf' function. */
#undef HAVE_LCKPWDF
@@ -164,9 +148,6 @@
/* Define to 1 if you have the <minix/config.h> header file. */
#undef HAVE_MINIX_CONFIG_H
/* Define to 1 if you have the <paths.h> header file. */
#undef HAVE_PATHS_H
/* Define to 1 if you have the `putgrent' function. */
#undef HAVE_PUTGRENT
@@ -179,9 +160,6 @@
/* Define to 1 if you have the <readpassphrase.h> header file. */
#undef HAVE_READPASSPHRASE_H
/* Define to 1 if you have the <rpc/key_prot.h> header file. */
#undef HAVE_RPC_KEY_PROT_H
/* Define to 1 if you have the `rpmatch' function. */
#undef HAVE_RPMATCH
@@ -197,9 +175,6 @@
/* Define to 1 if you have the <semanage/semanage.h> header file. */
#undef HAVE_SEMANAGE_SEMANAGE_H
/* Define to 1 if you have the `setgroups' function. */
#undef HAVE_SETGROUPS
/* Define to 1 if you have the `sgetgrent' function. */
#undef HAVE_SGETGRENT
@@ -209,12 +184,6 @@
/* Define to 1 if you have the `sgetspent' function. */
#undef HAVE_SGETSPENT
/* Define to 1 if you have the <sgtty.h> header file. */
#undef HAVE_SGTTY_H
/* Have working shadow group support in libc */
#undef HAVE_SHADOWGRP
/* Define if you have the shl_load function. */
#undef HAVE_SHL_LOAD
@@ -260,15 +229,6 @@
/* Define to 1 if `ut_xtime' is a member of `struct utmpx'. */
#undef HAVE_STRUCT_UTMPX_UT_XTIME
/* Define to 1 if you have the <sys/capability.h> header file. */
#undef HAVE_SYS_CAPABILITY_H
/* Define to 1 if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H
/* Define to 1 if you have the <sys/random.h> header file. */
#undef HAVE_SYS_RANDOM_H
/* Define to 1 if you have the <sys/statfs.h> header file. */
#undef HAVE_SYS_STATFS_H
@@ -281,9 +241,6 @@
/* Define to 1 if you have the <tcb.h> header file. */
#undef HAVE_TCB_H
/* Define to 1 if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
@@ -296,9 +253,6 @@
/* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */
#undef HAVE_UTIME_NULL
/* Define to 1 if you have the <utmp.h> header file. */
#undef HAVE_UTMP_H
/* Define to support vendor settings. */
#undef HAVE_VENDORDIR
@@ -517,9 +471,3 @@
/* Path for wtmp file. */
#undef _WTMP_FILE
/* Define to `int' if <sys/types.h> doesn't define. */
#undef gid_t
/* Define to `int' if <sys/types.h> doesn't define. */
#undef uid_t
Vendored
+185 -434
View File
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.71 for shadow 4.17.2.
# Generated by GNU Autoconf 2.71 for shadow 4.17.3.
#
# Report bugs to <pkg-shadow-devel@lists.alioth.debian.org>.
#
@@ -621,8 +621,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='shadow'
PACKAGE_TARNAME='shadow'
PACKAGE_VERSION='4.17.2'
PACKAGE_STRING='shadow 4.17.2'
PACKAGE_VERSION='4.17.3'
PACKAGE_STRING='shadow 4.17.3'
PACKAGE_BUGREPORT='pkg-shadow-devel@lists.alioth.debian.org'
PACKAGE_URL='https://github.com/shadow-maint/shadow'
@@ -671,6 +671,7 @@ INTLLIBS
LTLIBICONV
LIBICONV
INTL_MACOSX_LIBS
CPP
XGETTEXT_EXTRA_OPTIONS
MSGMERGE
XGETTEXT_015
@@ -744,7 +745,6 @@ USE_SHA_CRYPT_FALSE
USE_SHA_CRYPT_TRUE
GROUP_NAME_MAX_LENGTH
LIBOBJS
CPP
LIBADD_DL
LT_DLPREOPEN
LIBADD_DLD_LINK
@@ -932,14 +932,14 @@ CPPFLAGS
YACC
YFLAGS
LT_SYS_LIBRARY_PATH
CPP
PKG_CONFIG
PKG_CONFIG_PATH
PKG_CONFIG_LIBDIR
CMOCKA_CFLAGS
CMOCKA_LIBS
LIBBSD_CFLAGS
LIBBSD_LIBS'
LIBBSD_LIBS
CPP'
# Initialize some variables set by options.
@@ -1488,7 +1488,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures shadow 4.17.2 to adapt to many kinds of systems.
\`configure' configures shadow 4.17.3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1559,7 +1559,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of shadow 4.17.2:";;
short | recursive ) echo "Configuration of shadow 4.17.3:";;
esac
cat <<\_ACEOF
@@ -1657,7 +1657,6 @@ Some influential environment variables:
default value of `-d' given by some make applications.
LT_SYS_LIBRARY_PATH
User-defined run-time library search path.
CPP C preprocessor
PKG_CONFIG path to pkg-config utility
PKG_CONFIG_PATH
directories to add to pkg-config's search path
@@ -1669,6 +1668,7 @@ Some influential environment variables:
LIBBSD_CFLAGS
C compiler flags for LIBBSD, overriding pkg-config
LIBBSD_LIBS linker flags for LIBBSD, overriding pkg-config
CPP C preprocessor
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@@ -1738,7 +1738,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
shadow configure 4.17.2
shadow configure 4.17.3
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2045,44 +2045,6 @@ printf "%s\n" "$ac_res" >&6; }
} # ac_fn_c_check_member
# ac_fn_c_try_cpp LINENO
# ----------------------
# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_cpp ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
if { { ac_try="$ac_cpp conftest.$ac_ext"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
grep -v '^ *+' conftest.err >conftest.er1
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } > conftest.i && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}
then :
ac_retval=0
else $as_nop
printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_cpp
# ac_fn_c_try_run LINENO
# ----------------------
# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that
@@ -2314,6 +2276,44 @@ rm -f conftest.val
as_fn_set_status $ac_retval
} # ac_fn_c_compute_int
# ac_fn_c_try_cpp LINENO
# ----------------------
# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_cpp ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
if { { ac_try="$ac_cpp conftest.$ac_ext"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
grep -v '^ *+' conftest.err >conftest.er1
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } > conftest.i && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}
then :
ac_retval=0
else $as_nop
printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_cpp
ac_configure_args_raw=
for ac_arg
do
@@ -2338,7 +2338,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by shadow $as_me 4.17.2, which was
It was created by shadow $as_me 4.17.3, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -3611,7 +3611,7 @@ fi
# Define the identity of the package.
PACKAGE='shadow'
VERSION='4.17.2'
VERSION='4.17.3'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -14700,92 +14700,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_fn_c_check_header_compile "$LINENO" "crypt.h" "ac_cv_header_crypt_h" "$ac_includes_default"
if test "x$ac_cv_header_crypt_h" = xyes
then :
printf "%s\n" "#define HAVE_CRYPT_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "utmp.h" "ac_cv_header_utmp_h" "$ac_includes_default"
if test "x$ac_cv_header_utmp_h" = xyes
then :
printf "%s\n" "#define HAVE_UTMP_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" "$ac_includes_default"
if test "x$ac_cv_header_termio_h" = xyes
then :
printf "%s\n" "#define HAVE_TERMIO_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "sgtty.h" "ac_cv_header_sgtty_h" "$ac_includes_default"
if test "x$ac_cv_header_sgtty_h" = xyes
then :
printf "%s\n" "#define HAVE_SGTTY_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_ioctl_h" = xyes
then :
printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "paths.h" "ac_cv_header_paths_h" "$ac_includes_default"
if test "x$ac_cv_header_paths_h" = xyes
then :
printf "%s\n" "#define HAVE_PATHS_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "sys/capability.h" "ac_cv_header_sys_capability_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_capability_h" = xyes
then :
printf "%s\n" "#define HAVE_SYS_CAPABILITY_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "sys/random.h" "ac_cv_header_sys_random_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_random_h" = xyes
then :
printf "%s\n" "#define HAVE_SYS_RANDOM_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "gshadow.h" "ac_cv_header_gshadow_h" "$ac_includes_default"
if test "x$ac_cv_header_gshadow_h" = xyes
then :
printf "%s\n" "#define HAVE_GSHADOW_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "lastlog.h" "ac_cv_header_lastlog_h" "$ac_includes_default"
if test "x$ac_cv_header_lastlog_h" = xyes
then :
printf "%s\n" "#define HAVE_LASTLOG_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "rpc/key_prot.h" "ac_cv_header_rpc_key_prot_h" "$ac_includes_default"
if test "x$ac_cv_header_rpc_key_prot_h" = xyes
then :
printf "%s\n" "#define HAVE_RPC_KEY_PROT_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "acl/libacl.h" "ac_cv_header_acl_libacl_h" "$ac_includes_default"
if test "x$ac_cv_header_acl_libacl_h" = xyes
then :
printf "%s\n" "#define HAVE_ACL_LIBACL_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "attr/libattr.h" "ac_cv_header_attr_libattr_h" "$ac_includes_default"
if test "x$ac_cv_header_attr_libattr_h" = xyes
then :
printf "%s\n" "#define HAVE_ATTR_LIBATTR_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "attr/error_context.h" "ac_cv_header_attr_error_context_h" "$ac_includes_default"
if test "x$ac_cv_header_attr_error_context_h" = xyes
then :
printf "%s\n" "#define HAVE_ATTR_ERROR_CONTEXT_H 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "shadow.h" "ac_cv_header_shadow_h" "$ac_includes_default"
if test "x$ac_cv_header_shadow_h" = xyes
then :
@@ -14830,12 +14744,6 @@ if test "x$ac_cv_func_getusershell" = xyes
then :
printf "%s\n" "#define HAVE_GETUSERSHELL 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "initgroups" "ac_cv_func_initgroups"
if test "x$ac_cv_func_initgroups" = xyes
then :
printf "%s\n" "#define HAVE_INITGROUPS 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "lckpwdf" "ac_cv_func_lckpwdf"
if test "x$ac_cv_func_lckpwdf" = xyes
@@ -14848,12 +14756,6 @@ if test "x$ac_cv_func_lutimes" = xyes
then :
printf "%s\n" "#define HAVE_LUTIMES 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "setgroups" "ac_cv_func_setgroups"
if test "x$ac_cv_func_setgroups" = xyes
then :
printf "%s\n" "#define HAVE_SETGROUPS 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "updwtmpx" "ac_cv_func_updwtmpx"
if test "x$ac_cv_func_updwtmpx" = xyes
@@ -15175,240 +15077,6 @@ printf "%s\n" "#define HAVE_STRUCT_UTMPX_UT_XTIME 1" >>confdefs.h
fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
printf %s "checking how to run the C preprocessor... " >&6; }
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
if test ${ac_cv_prog_CPP+y}
then :
printf %s "(cached) " >&6
else $as_nop
# Double quotes because $CC needs to be expanded
for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
do
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
Syntax error
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
else $as_nop
# Broken: fails on valid input.
continue
fi
rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
# Broken: success on invalid input.
continue
else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
fi
rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok
then :
break
fi
done
ac_cv_prog_CPP=$CPP
fi
CPP=$ac_cv_prog_CPP
else
ac_cv_prog_CPP=$CPP
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
printf "%s\n" "$CPP" >&6; }
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
Syntax error
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
else $as_nop
# Broken: fails on valid input.
continue
fi
rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
# Broken: success on invalid input.
continue
else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
fi
rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok
then :
else $as_nop
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
See \`config.log' for more details" "$LINENO" 5; }
fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
printf %s "checking for uid_t in sys/types.h... " >&6; }
if test ${ac_cv_type_uid_t+y}
then :
printf %s "(cached) " >&6
else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
$EGREP "uid_t" >/dev/null 2>&1
then :
ac_cv_type_uid_t=yes
else $as_nop
ac_cv_type_uid_t=no
fi
rm -rf conftest*
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
printf "%s\n" "$ac_cv_type_uid_t" >&6; }
if test $ac_cv_type_uid_t = no; then
printf "%s\n" "#define uid_t int" >>confdefs.h
printf "%s\n" "#define gid_t int" >>confdefs.h
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking type of array argument to getgroups" >&5
printf %s "checking type of array argument to getgroups... " >&6; }
if test ${ac_cv_type_getgroups+y}
then :
printf %s "(cached) " >&6
else $as_nop
if test "$cross_compiling" = yes
then :
ac_cv_type_getgroups=cross
else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Thanks to Mike Rendell for this test. */
$ac_includes_default
#define NGID 256
#undef MAX
#define MAX(x, y) ((x) > (y) ? (x) : (y))
int
main (void)
{
gid_t gidset[NGID];
int i, n;
union { gid_t gval; long int lval; } val;
val.lval = -1;
for (i = 0; i < NGID; i++)
gidset[i] = val.gval;
n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1,
gidset);
/* Exit non-zero if getgroups seems to require an array of ints. This
happens when gid_t is short int but getgroups modifies an array
of ints. */
return n > 0 && gidset[n] != val.gval;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"
then :
ac_cv_type_getgroups=gid_t
else $as_nop
ac_cv_type_getgroups=int
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
if test $ac_cv_type_getgroups = cross; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <unistd.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
$EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1
then :
ac_cv_type_getgroups=gid_t
else $as_nop
ac_cv_type_getgroups=int
fi
rm -rf conftest*
fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5
printf "%s\n" "$ac_cv_type_getgroups" >&6; }
printf "%s\n" "#define GETGROUPS_T $ac_cv_type_getgroups" >>confdefs.h
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether utime accepts a null argument" >&5
@@ -15559,56 +15227,6 @@ printf "%s\n" "#define HAS_SECURE_GETENV 1" >>confdefs.h
fi
if test "$ac_cv_header_shadow_h" = "yes"; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working shadow group support" >&5
printf %s "checking for working shadow group support... " >&6; }
if test ${ac_cv_libc_shadowgrp+y}
then :
printf %s "(cached) " >&6
else $as_nop
if test "$cross_compiling" = yes
then :
ac_cv_libc_shadowgrp=no
else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <shadow.h>
#ifdef HAVE_GSHADOW_H
#include <gshadow.h>
#endif
int
main()
{
struct sgrp *sg = sgetsgent("test:x::");
/* NYS libc on Red Hat 3.0.3 has broken shadow group support */
return !sg || !sg->sg_adm || !sg->sg_mem;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"
then :
ac_cv_libc_shadowgrp=yes
else $as_nop
ac_cv_libc_shadowgrp=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libc_shadowgrp" >&5
printf "%s\n" "$ac_cv_libc_shadowgrp" >&6; }
if test "$ac_cv_libc_shadowgrp" = "yes"; then
printf "%s\n" "#define HAVE_SHADOWGRP 1" >>confdefs.h
fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking location of shared mail directory" >&5
printf %s "checking location of shared mail directory... " >&6; }
if test ${shadow_cv_maildir+y}
@@ -18612,6 +18230,139 @@ else $as_nop
fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
printf %s "checking how to run the C preprocessor... " >&6; }
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
if test ${ac_cv_prog_CPP+y}
then :
printf %s "(cached) " >&6
else $as_nop
# Double quotes because $CC needs to be expanded
for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
do
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
Syntax error
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
else $as_nop
# Broken: fails on valid input.
continue
fi
rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
# Broken: success on invalid input.
continue
else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
fi
rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok
then :
break
fi
done
ac_cv_prog_CPP=$CPP
fi
CPP=$ac_cv_prog_CPP
else
ac_cv_prog_CPP=$CPP
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
printf "%s\n" "$CPP" >&6; }
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
Syntax error
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
else $as_nop
# Broken: fails on valid input.
continue
fi
rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"
then :
# Broken: success on invalid input.
continue
else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
fi
rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok
then :
else $as_nop
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
See \`config.log' for more details" "$LINENO" 5; }
fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
acl_libdirstem=lib
@@ -20846,7 +20597,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by shadow $as_me 4.17.2, which was
This file was extended by shadow $as_me 4.17.3, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -20915,7 +20666,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
shadow config.status 4.17.2
shadow config.status 4.17.3
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
+3 -38
View File
@@ -4,7 +4,7 @@ m4_define([libsubid_abi_major], 5)
m4_define([libsubid_abi_minor], 0)
m4_define([libsubid_abi_micro], 0)
m4_define([libsubid_abi], [libsubid_abi_major.libsubid_abi_minor.libsubid_abi_micro])
AC_INIT([shadow], [4.17.2], [pkg-shadow-devel@lists.alioth.debian.org], [],
AC_INIT([shadow], [4.17.3], [pkg-shadow-devel@lists.alioth.debian.org], [],
[https://github.com/shadow-maint/shadow])
AM_INIT_AUTOMAKE([1.11 foreign dist-xz subdir-objects tar-pax])
AC_CONFIG_MACRO_DIRS([m4])
@@ -36,20 +36,13 @@ LT_LIB_DLLOAD
dnl Checks for libraries.
dnl Checks for header files.
AC_CHECK_HEADERS(crypt.h utmp.h \
termio.h sgtty.h sys/ioctl.h paths.h \
sys/capability.h sys/random.h \
gshadow.h lastlog.h rpc/key_prot.h acl/libacl.h \
attr/libattr.h attr/error_context.h)
dnl shadow now uses the libc's shadow implementation
AC_CHECK_HEADER([shadow.h],,[AC_MSG_ERROR([You need a libc with shadow.h])])
AC_CHECK_FUNCS(arc4random_buf futimes \
getentropy getrandom getspnam getusershell \
initgroups lckpwdf lutimes \
setgroups updwtmpx innetgr \
lckpwdf lutimes \
updwtmpx innetgr \
getspnam_r \
rpmatch \
memset_explicit explicit_bzero stpecpy stpeprintf)
@@ -66,7 +59,6 @@ AC_CHECK_MEMBERS([struct utmpx.ut_name,
struct utmpx.ut_xtime],,,[[#include <utmpx.h>]])
dnl Checks for library functions.
AC_TYPE_GETGROUPS
AC_FUNC_UTIME_NULL
AC_REPLACE_FUNCS(putgrent putpwent putspent)
AC_REPLACE_FUNCS(sgetgrent sgetpwent sgetspent)
@@ -76,33 +68,6 @@ AC_CHECK_FUNC(secure_getenv, [AC_DEFINE(HAS_SECURE_GETENV,
1,
[Defined to 1 if you have the declaration of 'secure_getenv'])])
if test "$ac_cv_header_shadow_h" = "yes"; then
AC_CACHE_CHECK(for working shadow group support,
ac_cv_libc_shadowgrp,
AC_RUN_IFELSE([AC_LANG_SOURCE([
#include <shadow.h>
#ifdef HAVE_GSHADOW_H
#include <gshadow.h>
#endif
int
main()
{
struct sgrp *sg = sgetsgent("test:x::");
/* NYS libc on Red Hat 3.0.3 has broken shadow group support */
return !sg || !sg->sg_adm || !sg->sg_mem;
}]
)],
[ac_cv_libc_shadowgrp=yes],
[ac_cv_libc_shadowgrp=no],
[ac_cv_libc_shadowgrp=no]
)
)
if test "$ac_cv_libc_shadowgrp" = "yes"; then
AC_DEFINE(HAVE_SHADOWGRP, 1, [Have working shadow group support in libc])
fi
fi
AC_CACHE_CHECK([location of shared mail directory], shadow_cv_maildir,
[for shadow_cv_maildir in /var/mail /var/spool/mail /usr/spool/mail /usr/mail none; do
if test -d $shadow_cv_maildir; then
+28
View File
@@ -1,3 +1,31 @@
shadow (1:4.17.3-2) unstable; urgency=medium
* Do not warn about useradd --system with Debian-globally allocated uids
(Closes: #1100563)
* Refresh patches
-- Chris Hofstaedtler <zeha@debian.org> Sun, 16 Mar 2025 13:39:58 +0100
shadow (1:4.17.3-1) unstable; urgency=medium
* New upstream version 4.17.3
* Refresh patches and include upstream patch for getdate.
Include https://github.com/shadow-maint/shadow/pull/1214 to fix
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1095430 in the
way upstream intends to fix it.
* Explicitly pass {s,}bindir to configure.
Avoids upstream hacks in configure.
-- Chris Hofstaedtler <zeha@debian.org> Mon, 24 Feb 2025 23:09:52 +0100
shadow (1:4.17.2-6) unstable; urgency=medium
* d/rules: ensure lib/getdate.c gets rebuilt
* configure: always pick /usr/bin/passwd.
Thanks to Jochen Sprickerhof <jspricke@debian.org>
-- Chris Hofstaedtler <zeha@debian.org> Mon, 24 Feb 2025 12:16:49 +0100
shadow (1:4.17.2-5) unstable; urgency=medium
* Warn about future --badname removal.
+5
View File
@@ -1,2 +1,7 @@
[DEFAULT]
upstream-branch = upstream
pristine-tar = True
sign-tags = True
[pq]
patch-numbers = False
@@ -1,28 +0,0 @@
From: Chris Hofstaedtler <zeha@debian.org>
Date: Sun, 16 Feb 2025 20:21:35 +0100
Subject: Revert "lib/strtoday.c: strtoday(): Fix calculation"
This reverts commit 1175932c0c86ee46ee298fd9cfa01653a2ba3a27.
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1095430
---
lib/strtoday.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/strtoday.c b/lib/strtoday.c
index 01f2e9b..f947778 100644
--- a/lib/strtoday.c
+++ b/lib/strtoday.c
@@ -67,9 +67,10 @@ long strtoday (const char *str)
return retdate;
}
- t = get_date(str, NULL);
+ t = get_date (str, NULL);
if ((time_t) - 1 == t) {
return -2;
}
- return t / DAY;
+ /* convert seconds to days since 1970-01-01 */
+ return (t + DAY / 2) / DAY;
}
+13 -16
View File
@@ -7,8 +7,8 @@ Remove settings only applicable without PAM support enabled.
Remove obscure commented-out settings.
Remove explanation about write(1), which Debian does not ship anymore.
---
etc/login.defs | 375 ++++++++-------------------------------------------------
1 file changed, 47 insertions(+), 328 deletions(-)
etc/login.defs | 369 +++++++--------------------------------------------------
1 file changed, 44 insertions(+), 325 deletions(-)
diff --git a/etc/login.defs b/etc/login.defs
index 33622c2..91d3ec4 100644
@@ -21,22 +21,14 @@ index 33622c2..91d3ec4 100644
-# $Id$
-#
-#
-# Delay in seconds before being allowed another attempt after a login failure
-# Note: When PAM is used, some modules may enforce a minimum delay (e.g.
-# pam_unix(8) enforces a 2s delay)
-#
-FAIL_DELAY 3
-
-#
-# Enable logging and display of /var/log/faillog login(1) failure info.
-#
-FAILLOG_ENAB yes
+# REQUIRED for useradd/userdel/usermod
+# Directory where mailboxes reside, _or_ name of file, relative to the
+# home directory. If you _do_ define MAIL_DIR and MAIL_FILE,
+# MAIL_DIR takes precedence.
+#
#
-# Delay in seconds before being allowed another attempt after a login failure
-# Note: When PAM is used, some modules may enforce a minimum delay (e.g.
-# pam_unix(8) enforces a 2s delay)
+# Essentially:
+# - MAIL_DIR defines the location of users mail spool files
+# (for mbox use) by appending the username to MAIL_DIR as defined
@@ -44,13 +36,18 @@ index 33622c2..91d3ec4 100644
+# - MAIL_FILE defines the location of the users mail spool files as the
+# fully-qualified filename obtained by prepending the user home
+# directory before $MAIL_FILE
+#
#
-FAIL_DELAY 3
-
+# NOTE: This is no more used for setting up users MAIL environment variable
+# which is, starting from shadow 4.0.12-1 in Debian, entirely the
+# job of the pam_mail PAM modules
+# See default PAM configuration files provided for
+# login, su, etc.
+#
#
-# Enable logging and display of /var/log/faillog login(1) failure info.
-#
-FAILLOG_ENAB yes
+# This is a temporary situation: setting these variables will soon
+# move to /etc/default/useradd and the variables will then be
+# no more supported
+2 -2
View File
@@ -7,7 +7,7 @@ Subject: Define LOGIN_NAME_MAX on HURD
1 file changed, 6 insertions(+)
diff --git a/lib/chkname.c b/lib/chkname.c
index bee2e6b..c3fb552 100644
index 57d6d96..6af55a9 100644
--- a/lib/chkname.c
+++ b/lib/chkname.c
@@ -29,6 +29,12 @@
@@ -22,4 +22,4 @@ index bee2e6b..c3fb552 100644
+
#include "defines.h"
#include "chkname.h"
#include "string/strcmp/streq.h"
#include "string/ctype/strisascii/strisdigit.h"
@@ -12,7 +12,7 @@ upstream.
create mode 100644 man/man8/shadowconfig.8
diff --git a/man/Makefile.am b/man/Makefile.am
index 1405509..0e88fea 100644
index f34ed7a..2523e84 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -36,6 +36,7 @@ man_MANS = \
@@ -0,0 +1,37 @@
From: Chris Hofstaedtler <zeha@debian.org>
Date: Sun, 16 Mar 2025 13:29:45 +0100
Subject: Exclude Debian-globally allocated UIDs from sys_uid range warning
Bug: http://bugs.debian.org/1100563
---
src/useradd.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/useradd.c b/src/useradd.c
index 5e4eb2c..dd12cdf 100644
--- a/src/useradd.c
+++ b/src/useradd.c
@@ -2430,14 +2430,21 @@ static void create_mail (void)
#endif
}
+/* See Debian Policy 9.2.2 "UID and GID classes"
+ * https://www.debian.org/doc/debian-policy/ch-opersys.html#uid-and-gid-classes
+ */
+#define DEBIAN_GLOBAL_UID_MIN ((uid_t)60000)
+#define DEBIAN_GLOBAL_UID_MAX ((uid_t)64999)
+
static void check_uid_range(int rflg, uid_t user_id)
{
uid_t uid_min ;
uid_t uid_max ;
if (rflg) {
uid_max = getdef_ulong("SYS_UID_MAX",getdef_ulong("UID_MIN",1000UL)-1);
- if (user_id > uid_max) {
- fprintf(stderr, _("%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n"), Prog, user_name, user_id, uid_max);
+ if (user_id > uid_max
+ && (!(user_id >= DEBIAN_GLOBAL_UID_MIN && user_id <= DEBIAN_GLOBAL_UID_MAX))) {
+ fprintf(stderr, _("%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n"), Prog, user_name, user_id, uid_max);
}
}else{
uid_min = getdef_ulong("UID_MIN", 1000UL);
@@ -17,7 +17,7 @@ configuration files shipped in Debian (debian/default/useradd).
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/man/useradd.8.xml b/man/useradd.8.xml
index 001e7d1..4888100 100644
index eda1fef..38f2c68 100644
--- a/man/useradd.8.xml
+++ b/man/useradd.8.xml
@@ -248,7 +248,7 @@
@@ -30,10 +30,10 @@ index 001e7d1..4888100 100644
</listitem>
</varlistentry>
diff --git a/src/useradd.c b/src/useradd.c
index 7623dab..954b329 100644
index ee52aaf..5e4eb2c 100644
--- a/src/useradd.c
+++ b/src/useradd.c
@@ -96,14 +96,14 @@ static const char Prog[] = "useradd";
@@ -97,14 +97,14 @@ static const char Prog[] = "useradd";
/*
* These defaults are used if there is no defaults file.
*/
@@ -11,7 +11,7 @@ Status wrt upstream: Debian specific patch.
2 files changed, 12 insertions(+)
diff --git a/man/useradd.8.xml b/man/useradd.8.xml
index 4888100..17987a6 100644
index 38f2c68..9009d83 100644
--- a/man/useradd.8.xml
+++ b/man/useradd.8.xml
@@ -82,6 +82,12 @@
@@ -12,7 +12,7 @@ Fixes: #166793
3 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/lib/commonio.c b/lib/commonio.c
index 4d83e83..51e6300 100644
index b7c9a2d..309efa0 100644
--- a/lib/commonio.c
+++ b/lib/commonio.c
@@ -21,6 +21,7 @@
@@ -24,7 +24,7 @@ index 4d83e83..51e6300 100644
#include "alloc/malloc.h"
#include "alloc/reallocf.h"
@@ -953,12 +954,23 @@ int commonio_close (struct commonio_db *db)
if (errors != 0)
if (errors)
goto fail;
} else {
+ struct group *grp;
@@ -48,7 +48,7 @@ index 4d83e83..51e6300 100644
if (SNPRINTF(buf, "%s+", db->filename) == -1)
diff --git a/lib/sgroupio.c b/lib/sgroupio.c
index acb140d..6ffccd1 100644
index 9805761..e3c0458 100644
--- a/lib/sgroupio.c
+++ b/lib/sgroupio.c
@@ -210,7 +210,7 @@ static struct commonio_db gshadow_db = {
@@ -3,7 +3,7 @@ Date: Tue, 6 Aug 2024 00:27:13 +0200
Subject: Stop building programs we do not install
---
man/Makefile.am | 16 ----------------
man/Makefile.am | 15 ---------------
man/cs/Makefile.am | 9 ---------
man/da/Makefile.am | 3 ---
man/de/Makefile.am | 10 ----------
@@ -21,10 +21,10 @@ Subject: Stop building programs we do not install
man/zh_CN/Makefile.am | 10 ----------
man/zh_TW/Makefile.am | 2 --
src/Makefile.am | 7 +++----
18 files changed, 3 insertions(+), 122 deletions(-)
18 files changed, 3 insertions(+), 121 deletions(-)
diff --git a/man/Makefile.am b/man/Makefile.am
index 0e88fea..18c012d 100644
index 2523e84..05a0c86 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -13,8 +13,6 @@ man_MANS = \
@@ -36,7 +36,7 @@ index 0e88fea..18c012d 100644
man3/getspnam.3 \
man1/gpasswd.1 \
man8/groupadd.8 \
@@ -25,22 +23,16 @@ man_MANS = \
@@ -25,19 +23,14 @@ man_MANS = \
man8/grpconv.8 \
man8/grpunconv.8 \
man5/gshadow.5 \
@@ -55,11 +55,8 @@ index 0e88fea..18c012d 100644
- man1/sg.1 \
man3/shadow.3 \
man5/shadow.5 \
- man5/suauth.5 \
man8/useradd.8 \
man8/userdel.8 \
man8/usermod.8 \
@@ -82,8 +74,6 @@ man_XMANS = \
@@ -82,8 +75,6 @@ man_XMANS = \
chpasswd.8.xml \
chsh.1.xml \
expiry.1.xml \
@@ -68,7 +65,7 @@ index 0e88fea..18c012d 100644
getsubids.1.xml \
gpasswd.1.xml \
groupadd.8.xml \
@@ -96,12 +86,9 @@ man_XMANS = \
@@ -96,12 +87,9 @@ man_XMANS = \
login.1.xml \
login.access.5.xml \
login.defs.5.xml \
@@ -81,7 +78,7 @@ index 0e88fea..18c012d 100644
passwd.1.xml \
passwd.5.xml \
porttime.5.xml \
@@ -109,9 +96,6 @@ man_XMANS = \
@@ -109,9 +97,6 @@ man_XMANS = \
pwconv.8.xml \
shadow.3.xml \
shadow.5.xml \
@@ -531,7 +528,7 @@ index c36ed2c..6fb6a15 100644
man8/userdel.8 \
man8/usermod.8
diff --git a/src/Makefile.am b/src/Makefile.am
index d4e6f3a..78722ad 100644
index 6981815..5ca78ed 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -26,8 +26,8 @@ AM_CFLAGS = $(LIBBSD_CFLAGS)
@@ -11,10 +11,10 @@ Upstream PR 1158 will remove them, probably in the forky timeframe.
4 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/src/newusers.c b/src/newusers.c
index 5e78dd9..964e668 100644
index e3685ef..16abd81 100644
--- a/src/newusers.c
+++ b/src/newusers.c
@@ -125,7 +125,7 @@ static void usage (int status)
@@ -127,7 +127,7 @@ static void usage (int status)
"\n"
"Options:\n"),
Prog);
@@ -23,7 +23,7 @@ index 5e78dd9..964e668 100644
#ifndef USE_PAM
(void) fprintf (usageout,
_(" -c, --crypt-method METHOD the crypt method (one of %s)\n"),
@@ -658,6 +658,9 @@ static void process_flags (int argc, char **argv)
@@ -660,6 +660,9 @@ static void process_flags (int argc, char **argv)
switch (c) {
case 'b':
allow_bad_names = true;
@@ -34,7 +34,7 @@ index 5e78dd9..964e668 100644
#ifndef USE_PAM
case 'c':
diff --git a/src/pwck.c b/src/pwck.c
index ae7ddad..8805422 100644
index b485a5a..e20be0f 100644
--- a/src/pwck.c
+++ b/src/pwck.c
@@ -133,7 +133,7 @@ usage (int status)
@@ -57,10 +57,10 @@ index ae7ddad..8805422 100644
case 'h':
usage (E_SUCCESS);
diff --git a/src/useradd.c b/src/useradd.c
index 92f8054..f5169b3 100644
index dd12cdf..ba0eb50 100644
--- a/src/useradd.c
+++ b/src/useradd.c
@@ -894,7 +894,7 @@ static void usage (int status)
@@ -895,7 +895,7 @@ static void usage (int status)
"\n"
"Options:\n"),
Prog, Prog, Prog);
@@ -69,7 +69,7 @@ index 92f8054..f5169b3 100644
(void) fputs (_(" -b, --base-dir BASE_DIR base directory for the home directory of the\n"
" new account\n"), usageout);
#ifdef WITH_BTRFS
@@ -1240,6 +1240,9 @@ static void process_flags (int argc, char **argv)
@@ -1241,6 +1241,9 @@ static void process_flags (int argc, char **argv)
break;
case 201:
allow_bad_names = true;
@@ -80,7 +80,7 @@ index 92f8054..f5169b3 100644
case 'c':
if (!VALID (optarg)) {
diff --git a/src/usermod.c b/src/usermod.c
index 24c5a4d..a06f2dc 100644
index 7ea1a72..3e9e046 100644
--- a/src/usermod.c
+++ b/src/usermod.c
@@ -383,7 +383,7 @@ usage (int status)
@@ -0,0 +1,23 @@
From: Chris Hofstaedtler <zeha@debian.org>
Date: Mon, 24 Feb 2025 23:24:41 +0100
Subject: configure.ac: align exec_prefix with prefix
Hopefully upstream will fix this one day.
Reported as https://github.com/shadow-maint/shadow/issues/1229
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 36c57d8..8a9c05a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -18,7 +18,7 @@ AC_SUBST([LIBSUBID_ABI], [libsubid_abi])
dnl Some hacks...
test "$prefix" = "NONE" && prefix="/usr"
-test "$prefix" = "/usr" && exec_prefix=""
+test "$prefix" = "/usr" && exec_prefix="/usr"
AC_USE_SYSTEM_EXTENSIONS
@@ -0,0 +1,30 @@
From: Chris Hofstaedtler <zeha@debian.org>
Date: Mon, 24 Feb 2025 12:01:18 +0100
Subject: configure.ac: be deterministic about passwd location
Improve reproducibility, without Build-Depend:ing on ourselves.
Forwarded: https://github.com/shadow-maint/shadow/issues/1224
---
configure.ac | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/configure.ac b/configure.ac
index 8a9c05a..b7cc59c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -115,13 +115,7 @@ AC_DEFINE_UNQUOTED(LASTLOG_FILE, "$shadow_cv_logdir/lastlog",
AC_DEFINE_UNQUOTED(FAILLOG_FILE, "$shadow_cv_logdir/faillog",
[Path for faillog file.])
-AC_CACHE_CHECK([location of the passwd program], shadow_cv_passwd_dir,
-[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",
+AC_DEFINE_UNQUOTED(PASSWD_PROGRAM, "$exec_prefix/bin/passwd",
[Path to passwd program.])
AC_ARG_ENABLE(shadowgrp,
+5 -4
View File
@@ -1,17 +1,18 @@
debian/Set-group-and-mode-for-g-shadow-files.patch
debian/Keep-using-Debian-adduser-defaults.patch
debian/Exclude-Debian-globally-allocated-UIDs-from-sys_uid-range.patch
debian/Document-the-shadowconfig-utility.patch
debian/Recommend-using-adduser-and-deluser.patch
debian/tests-disable-su.patch
debian/Adapt-login.defs-for-Debian.patch
debian/Define-LOGIN_NAME_MAX-on-HURD.patch
debian/Stop-building-programs-we-do-not-install.patch
upstream/a015e919834c90b99947829c6c823f7fe93a8097-E_BAD_NAME.patch
upstream/man-useradd.8.xml-Document-new-exit-code-19-E_BAD_NAME.patch
debian/Warn-when-badname-and-variants-are-given.patch
debian/configure.ac-align-exec_prefix-with-prefix.patch
debian/configure.ac-be-deterministic-about-passwd-location.patch
upstream/Revert-lib-src-Use-local-time-for-human-readable-dates.patch
Revert-lib-strtoday.c-strtoday-Fix-calculation.patch
Warn-when-badname-and-variants-are-given.patch
upstream/src-chfn.c-Partially-revert-lib-src-Use-strsep-3-instead-.patch
upstream/src-chfn.c-Use-stpsep-instead-of-its-pattern.patch
upstream/src-chfn.c-Add-local-variable-to-refer-to-the-separated-f.patch
upstream/src-chfn.c-copy_field-Rename-local-variable.patch
upstream/lib-getdate.y-Ignore-time-zone-information-and-use-UTC.patch
@@ -56,10 +56,10 @@ index b70e989..fe3308d 100644
return;
}
diff --git a/src/chage.c b/src/chage.c
index a7933e0..67e7e77 100644
index aed8e5b..e2902a7 100644
--- a/src/chage.c
+++ b/src/chage.c
@@ -243,7 +243,7 @@ print_day_as_date(long day)
@@ -238,7 +238,7 @@ print_day_as_date(long day)
return;
}
@@ -1,38 +0,0 @@
From: Alejandro Colomar <alx@kernel.org>
Date: Thu, 5 Dec 2024 17:38:54 +0100
Subject: [PATCH] src/useradd.c: E_BAD_NAME: Use a different error code for
bad login names
Wrappers like adduser(8) want to do their own stuff if the login name is
bad. For that, they need to be able to differentiate such an error.
Closes: <https://github.com/shadow-maint/shadow/issues/1103>
Suggested-by: Chris Hofstaedtler <zeha@debian.org>
Cc: Marc 'Zugschlus' Haber <mh+githubvisible@zugschlus.de>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
Bug-Debian: 1074306
---
src/useradd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/useradd.c b/src/useradd.c
index 954b329..92f8054 100644
--- a/src/useradd.c
+++ b/src/useradd.c
@@ -201,6 +201,7 @@ static bool home_added = false;
#define E_SUB_UID_UPDATE 16 /* can't update the subordinate uid file */
#define E_SUB_GID_UPDATE 18 /* can't update the subordinate gid file */
#endif /* ENABLE_SUBIDS */
+#define E_BAD_NAME 19 /* Bad login name */
#define DGROUP "GROUP"
#define DGROUPS "GROUPS"
@@ -1549,7 +1550,7 @@ static void process_flags (int argc, char **argv)
user_name, AUDIT_NO_ID,
SHADOW_AUDIT_FAILURE);
#endif
- exit (E_BAD_ARG);
+ exit (E_BAD_NAME);
}
if (!dflg) {
char *uh;
@@ -0,0 +1,375 @@
From: Alejandro Colomar <alx@kernel.org>
Date: Tue, 18 Feb 2025 00:41:56 +0100
Subject: lib/getdate.y: Ignore time-zone information and use UTC
There is exactly one caller of this function, and it wants a date, not a
time. It is useless to be able to parse local dates, because we
ultimately store a UTC date. To avoid confusion, unconditionally use
UTC. Since this code had important bugs regarding offset, we can safely
assume that no existing users rely on being able to use their local
date (this never worked correctly).
Also, the code parsing time zones was quite bad.
Link: <https://github.com/shadow-maint/shadow/issues/1202>
Link: <https://github.com/shadow-maint/shadow/issues/1209>
Reported-by: Chris Hofstaedtler <zeha@debian.org>
Reported-by: Tim Parenti <tim@timtimeonline.com>
Reported-by: Lee Garrett <lgarrett@rocketjump.eu>
Cc: Gus Kenion <https://github.com/kenion>
Cc: Michael Vetter <jubalh@iodoru.org>
Cc: Paul Eggert <eggert@cs.ucla.edu>
Cc: Iker Pedrosa <ipedrosa@redhat.com>
Cc: "Serge E. Hallyn" <serge@hallyn.com>
Cc: Brian Inglis <Brian.Inglis@SystematicSW.ab.ca>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
---
lib/getdate.y | 225 +++-------------------------------------------------------
1 file changed, 10 insertions(+), 215 deletions(-)
diff --git a/lib/getdate.y b/lib/getdate.y
index 20b1f5f..5b1d88d 100644
--- a/lib/getdate.y
+++ b/lib/getdate.y
@@ -92,8 +92,6 @@
static int yylex (void);
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 */
@@ -128,8 +126,6 @@ static int yyHaveDate;
static int yyHaveDay;
static int yyHaveRel;
static int yyHaveTime;
-static int yyHaveZone;
-static int yyTimezone;
static int yyDay;
static int yyHour;
static int yyMinutes;
@@ -151,13 +147,13 @@ static int yyRelYear;
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 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> tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT tZONE
+%type <Number> tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT
%type <Meridian> tMERIDIAN o_merid
%%
@@ -169,9 +165,6 @@ spec : /* NULL */
item : time {
yyHaveTime++;
}
- | zone {
- yyHaveZone++;
- }
| date {
yyHaveDate++;
}
@@ -200,10 +193,6 @@ time : tUNUMBER tMERIDIAN {
yyHour = $1;
yyMinutes = $3;
yyMeridian = MER24;
- yyHaveZone++;
- yyTimezone = ($4 < 0
- ? -$4 % 100 + (-$4 / 100) * 60
- : - ($4 % 100 + ($4 / 100) * 60));
}
| tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid {
yyHour = $1;
@@ -216,22 +205,6 @@ time : tUNUMBER tMERIDIAN {
yyMinutes = $3;
yySeconds = $5;
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 }
};
-/* 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)
{
register char *p;
- register char *q;
register const TABLE *tp;
int i;
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++)
if (streq(buff, tp->name))
{
@@ -708,32 +585,6 @@ static int LookupWord (char *buff)
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;
}
@@ -796,34 +647,14 @@ yylex (void)
#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)
{
- struct tm tm, tm0, *tmp;
+ struct tm tm, *tmp;
time_t Start;
yyInput = p;
Start = now ? *now : time(NULL);
- tmp = localtime (&Start);
+ tmp = gmtime(&Start);
yyYear = tmp->tm_year + TM_YEAR_ORIGIN;
yyMonth = tmp->tm_mon + 1;
yyDay = tmp->tm_mday;
@@ -841,10 +672,9 @@ time_t get_date (const char *p, const time_t *now)
yyHaveDay = 0;
yyHaveRel = 0;
yyHaveTime = 0;
- yyHaveZone = 0;
if (yyparse ()
- || yyHaveTime > 1 || yyHaveZone > 1 || yyHaveDate > 1 || yyHaveDay > 1)
+ || yyHaveTime > 1 || yyHaveDate > 1 || yyHaveDay > 1)
return -1;
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_min += yyRelMinutes;
tm.tm_sec += yyRelSeconds;
- tm.tm_isdst = -1;
- tm0 = tm;
+ tm.tm_isdst = 0;
- Start = mktime (&tm);
+ Start = timegm(&tm);
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;
}
@@ -906,19 +709,11 @@ time_t get_date (const char *p, const time_t *now)
{
tm.tm_mday += ((yyDayNumber - tm.tm_wday + 7) % 7
+ 7 * (yyDayOrdinal - (0 < yyDayOrdinal)));
- Start = mktime (&tm);
+ Start = timegm(&tm);
if (Start == (time_t) -1)
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;
}
@@ -1,31 +0,0 @@
From: Marc Haber <mh+debian-packages@zugschlus.de>
Date: Thu, 5 Dec 2024 18:54:17 +0100
Subject: man/useradd.8.xml: Document new exit code 19 (E_BAD_NAME)
Link: <https://github.com/shadow-maint/shadow/issues/1103>
Link: <https://github.com/shadow-maint/shadow/pull/1141>
Signed-off-by: Marc 'Zugschlus' Haber <mh+githubvisible@zugschlus.de>
Cc: Chris Hofstaedtler <zeha@debian.org>
Cc: Serge Hallyn <serge@hallyn.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
---
man/useradd.8.xml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/man/useradd.8.xml b/man/useradd.8.xml
index 17987a6..dbdd9b1 100644
--- a/man/useradd.8.xml
+++ b/man/useradd.8.xml
@@ -898,6 +898,12 @@
<para>can't update SELinux user mapping</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><replaceable>19</replaceable></term>
+ <listitem>
+ <para>invalid user or group name</para>
+ </listitem>
+ </varlistentry>
</variablelist>
</para>
</refsect1>
@@ -30,17 +30,17 @@ index 4c96fba..f06cb44 100644
*/
static char *copy_field (char *in, char *out, char *extra)
{
- while (NULL != in) {
- char *f;
+ char *cp = NULL;
- f = strsep(&in, ",");
+ while (NULL != in) {
+
while (NULL != in) {
- char *f;
+ cp = strchr (in, ',');
+ if (NULL != cp) {
+ *cp++ = '\0';
+ }
- f = strsep(&in, ",");
-
- if (strchr(f, '=') == NULL)
+ if (strchr (in, '=') == NULL) {
break;
+6
View File
@@ -10,6 +10,8 @@ include /usr/share/debhelper/dh_package_notes/package-notes.mk
# Adds extra options when calling the configure script:
DEB_CONFIGURE_EXTRA_FLAGS := \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--mandir=/usr/share/man \
--with-libpam \
--with-yescrypt \
@@ -42,6 +44,10 @@ CFLAGS += -DDEFAULT_EDITOR="\"sensible-editor\""
%:
dh $@
execute_after_dh_auto_clean:
# rebuild lib/getdate.c
rm -f lib/getdate.c
override_dh_auto_configure:
dh_auto_configure -- $(DEB_CONFIGURE_EXTRA_FLAGS)
+1 -1
View File
@@ -1,3 +1,3 @@
bin/getsubids usr/bin
usr/bin/getsubids
usr/bin/newgidmap
usr/bin/newuidmap
+1 -1
View File
@@ -1751,7 +1751,7 @@
}
#ifdef HAS_SHADOW
if ((pw->pw_passwd && pw->pw_passwd[0] == '@'
&& pw_auth (pw->pw_passwd+1, pw->pw_name, PW_LOGIN, NULL))
&& pw_auth(pw->pw_passwd+1, pw->pw_name))
|| !valid (passwd, pw)) {
return (UPAP_AUTHNAK);
}
-1
View File
@@ -11,7 +11,6 @@ pamd_files = \
passwd
pamd_acct_tools_files = \
chage \
chgpasswd \
groupadd \
groupdel \
-1
View File
@@ -342,7 +342,6 @@ top_srcdir = @top_srcdir@
pamd_files = chpasswd chfn chsh groupmems login newusers passwd \
$(am__append_2)
pamd_acct_tools_files = \
chage \
chgpasswd \
groupadd \
groupdel \
-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.c \
salt.c \
search/cmp/cmp.c \
search/cmp/cmp.h \
search/l/lfind.c \
search/l/lfind.h \
search/l/lsearch.c \
search/l/lsearch.h \
search/sort/qsort.c \
search/sort/qsort.h \
selinux.c \
semanage.c \
setugid.c \
@@ -165,6 +173,8 @@ libshadow_la_SOURCES = \
sgroupio.c \
sgroupio.h\
shadow.c \
shadow/grp/agetgroups.c \
shadow/grp/agetgroups.h \
shadowio.c \
shadowio.h \
shadowlog.c \
@@ -176,6 +186,8 @@ libshadow_la_SOURCES = \
spawn.c \
sssd.c \
sssd.h \
string/ctype/strisascii/strisdigit.c \
string/ctype/strisascii/strisdigit.h \
string/memset/memzero.c \
string/memset/memzero.h \
string/sprintf/snprintf.c \
@@ -186,12 +198,12 @@ libshadow_la_SOURCES = \
string/sprintf/xasprintf.h \
string/strchr/strchrcnt.c \
string/strchr/strchrcnt.h \
string/strchr/stpspn.c \
string/strchr/stpspn.h \
string/strchr/strchrscnt.c \
string/strchr/strchrscnt.h \
string/strchr/strnul.c \
string/strchr/strnul.h \
string/strchr/strrspn.c \
string/strchr/strrspn.h \
string/strcmp/strcaseeq.c \
string/strcmp/strcaseeq.h \
string/strcmp/streq.c \
string/strcmp/streq.h \
string/strcpy/stpecpy.c \
@@ -210,6 +222,16 @@ libshadow_la_SOURCES = \
string/strdup/xstrndup.h \
string/strftime.c \
string/strftime.h \
string/strspn/stpspn.c \
string/strspn/stpspn.h \
string/strspn/stprcspn.c \
string/strspn/stprcspn.h \
string/strspn/stprspn.c \
string/strspn/stprspn.h \
string/strspn/strrcspn.c \
string/strspn/strrcspn.h \
string/strspn/strrspn.c \
string/strspn/strrspn.h \
string/strtok/stpsep.c \
string/strtok/stpsep.h \
strtoday.c \
+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 \
prefix_flag.c prototypes.h pwauth.c pwauth.h pwio.c pwio.h \
pwd_init.c pwd2spwd.c pwdcheck.c pwmem.c remove_tree.c \
root_flag.c run_part.h run_part.c salt.c selinux.c semanage.c \
setugid.c setupenv.c sgetgrent.c sgetpwent.c sgetspent.c \
sgroupio.c sgroupio.h shadow.c shadowio.c shadowio.h \
shadowlog.c shadowlog.h shadowlog_internal.h shadowmem.c \
shell.c sizeof.h spawn.c sssd.c sssd.h string/memset/memzero.c \
root_flag.c run_part.h run_part.c salt.c search/cmp/cmp.c \
search/cmp/cmp.h search/l/lfind.c search/l/lfind.h \
search/l/lsearch.c search/l/lsearch.h search/sort/qsort.c \
search/sort/qsort.h selinux.c semanage.c setugid.c setupenv.c \
sgetgrent.c sgetpwent.c sgetspent.c sgroupio.c sgroupio.h \
shadow.c shadow/grp/agetgroups.c shadow/grp/agetgroups.h \
shadowio.c shadowio.h shadowlog.c shadowlog.h \
shadowlog_internal.h shadowmem.c shell.c sizeof.h spawn.c \
sssd.c sssd.h string/ctype/strisascii/strisdigit.c \
string/ctype/strisascii/strisdigit.h string/memset/memzero.c \
string/memset/memzero.h string/sprintf/snprintf.c \
string/sprintf/snprintf.h string/sprintf/stpeprintf.c \
string/sprintf/stpeprintf.h string/sprintf/xasprintf.c \
string/sprintf/xasprintf.h string/strchr/strchrcnt.c \
string/strchr/strchrcnt.h string/strchr/stpspn.c \
string/strchr/stpspn.h string/strchr/strnul.c \
string/strchr/strnul.h string/strchr/strrspn.c \
string/strchr/strrspn.h string/strcmp/streq.c \
string/strchr/strchrcnt.h string/strchr/strchrscnt.c \
string/strchr/strchrscnt.h string/strchr/strnul.c \
string/strchr/strnul.h string/strcmp/strcaseeq.c \
string/strcmp/strcaseeq.h string/strcmp/streq.c \
string/strcmp/streq.h string/strcpy/stpecpy.c \
string/strcpy/stpecpy.h string/strcpy/strncat.c \
string/strcpy/strncat.h string/strcpy/strncpy.c \
@@ -172,6 +177,11 @@ am__libshadow_la_SOURCES_DIST = addgrps.c adds.c adds.h age.c \
string/strdup/strndupa.h string/strdup/xstrdup.c \
string/strdup/xstrdup.h string/strdup/xstrndup.c \
string/strdup/xstrndup.h string/strftime.c string/strftime.h \
string/strspn/stpspn.c string/strspn/stpspn.h \
string/strspn/stprcspn.c string/strspn/stprcspn.h \
string/strspn/stprspn.c string/strspn/stprspn.h \
string/strspn/strrcspn.c string/strspn/strrcspn.h \
string/strspn/strrspn.c string/strspn/strrspn.h \
string/strtok/stpsep.c string/strtok/stpsep.h strtoday.c sub.c \
subordinateio.h subordinateio.c sulog.c time/day_to_str.c \
time/day_to_str.h ttytype.c typetraits.h tz.c ulimit.c \
@@ -235,22 +245,27 @@ am_libshadow_la_OBJECTS = libshadow_la-addgrps.lo libshadow_la-adds.lo \
libshadow_la-pwd2spwd.lo libshadow_la-pwdcheck.lo \
libshadow_la-pwmem.lo libshadow_la-remove_tree.lo \
libshadow_la-root_flag.lo libshadow_la-run_part.lo \
libshadow_la-salt.lo libshadow_la-selinux.lo \
libshadow_la-salt.lo search/cmp/libshadow_la-cmp.lo \
search/l/libshadow_la-lfind.lo \
search/l/libshadow_la-lsearch.lo \
search/sort/libshadow_la-qsort.lo libshadow_la-selinux.lo \
libshadow_la-semanage.lo libshadow_la-setugid.lo \
libshadow_la-setupenv.lo libshadow_la-sgetgrent.lo \
libshadow_la-sgetpwent.lo libshadow_la-sgetspent.lo \
libshadow_la-sgroupio.lo libshadow_la-shadow.lo \
libshadow_la-shadowio.lo libshadow_la-shadowlog.lo \
libshadow_la-shadowmem.lo libshadow_la-shell.lo \
libshadow_la-spawn.lo libshadow_la-sssd.lo \
shadow/grp/libshadow_la-agetgroups.lo libshadow_la-shadowio.lo \
libshadow_la-shadowlog.lo libshadow_la-shadowmem.lo \
libshadow_la-shell.lo libshadow_la-spawn.lo \
libshadow_la-sssd.lo \
string/ctype/strisascii/libshadow_la-strisdigit.lo \
string/memset/libshadow_la-memzero.lo \
string/sprintf/libshadow_la-snprintf.lo \
string/sprintf/libshadow_la-stpeprintf.lo \
string/sprintf/libshadow_la-xasprintf.lo \
string/strchr/libshadow_la-strchrcnt.lo \
string/strchr/libshadow_la-stpspn.lo \
string/strchr/libshadow_la-strchrscnt.lo \
string/strchr/libshadow_la-strnul.lo \
string/strchr/libshadow_la-strrspn.lo \
string/strcmp/libshadow_la-strcaseeq.lo \
string/strcmp/libshadow_la-streq.lo \
string/strcpy/libshadow_la-stpecpy.lo \
string/strcpy/libshadow_la-strncat.lo \
@@ -260,6 +275,11 @@ am_libshadow_la_OBJECTS = libshadow_la-addgrps.lo libshadow_la-adds.lo \
string/strdup/libshadow_la-xstrdup.lo \
string/strdup/libshadow_la-xstrndup.lo \
string/libshadow_la-strftime.lo \
string/strspn/libshadow_la-stpspn.lo \
string/strspn/libshadow_la-stprcspn.lo \
string/strspn/libshadow_la-stprspn.lo \
string/strspn/libshadow_la-strrcspn.lo \
string/strspn/libshadow_la-strrspn.lo \
string/strtok/libshadow_la-stpsep.lo libshadow_la-strtoday.lo \
libshadow_la-sub.lo libshadow_la-subordinateio.lo \
libshadow_la-sulog.lo time/libshadow_la-day_to_str.lo \
@@ -420,15 +440,21 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \
atoi/strtoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo \
fs/readlink/$(DEPDIR)/libshadow_la-areadlink.Plo \
fs/readlink/$(DEPDIR)/libshadow_la-readlinknul.Plo \
search/cmp/$(DEPDIR)/libshadow_la-cmp.Plo \
search/l/$(DEPDIR)/libshadow_la-lfind.Plo \
search/l/$(DEPDIR)/libshadow_la-lsearch.Plo \
search/sort/$(DEPDIR)/libshadow_la-qsort.Plo \
shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Plo \
string/$(DEPDIR)/libshadow_la-strftime.Plo \
string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Plo \
string/memset/$(DEPDIR)/libshadow_la-memzero.Plo \
string/sprintf/$(DEPDIR)/libshadow_la-snprintf.Plo \
string/sprintf/$(DEPDIR)/libshadow_la-stpeprintf.Plo \
string/sprintf/$(DEPDIR)/libshadow_la-xasprintf.Plo \
string/strchr/$(DEPDIR)/libshadow_la-stpspn.Plo \
string/strchr/$(DEPDIR)/libshadow_la-strchrcnt.Plo \
string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Plo \
string/strchr/$(DEPDIR)/libshadow_la-strnul.Plo \
string/strchr/$(DEPDIR)/libshadow_la-strrspn.Plo \
string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Plo \
string/strcmp/$(DEPDIR)/libshadow_la-streq.Plo \
string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo \
string/strcpy/$(DEPDIR)/libshadow_la-strncat.Plo \
@@ -437,6 +463,11 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \
string/strdup/$(DEPDIR)/libshadow_la-strndupa.Plo \
string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo \
string/strdup/$(DEPDIR)/libshadow_la-xstrndup.Plo \
string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Plo \
string/strspn/$(DEPDIR)/libshadow_la-stprspn.Plo \
string/strspn/$(DEPDIR)/libshadow_la-stpspn.Plo \
string/strspn/$(DEPDIR)/libshadow_la-strrcspn.Plo \
string/strspn/$(DEPDIR)/libshadow_la-strrspn.Plo \
string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo \
time/$(DEPDIR)/libshadow_la-day_to_str.Plo
am__mv = mv -f
@@ -712,19 +743,24 @@ libshadow_la_SOURCES = addgrps.c adds.c adds.h age.c agetpass.c \
pam_defs.h pam_pass.c pam_pass_non_interactive.c port.c port.h \
prefix_flag.c prototypes.h pwauth.c pwauth.h pwio.c pwio.h \
pwd_init.c pwd2spwd.c pwdcheck.c pwmem.c remove_tree.c \
root_flag.c run_part.h run_part.c salt.c selinux.c semanage.c \
setugid.c setupenv.c sgetgrent.c sgetpwent.c sgetspent.c \
sgroupio.c sgroupio.h shadow.c shadowio.c shadowio.h \
shadowlog.c shadowlog.h shadowlog_internal.h shadowmem.c \
shell.c sizeof.h spawn.c sssd.c sssd.h string/memset/memzero.c \
root_flag.c run_part.h run_part.c salt.c search/cmp/cmp.c \
search/cmp/cmp.h search/l/lfind.c search/l/lfind.h \
search/l/lsearch.c search/l/lsearch.h search/sort/qsort.c \
search/sort/qsort.h selinux.c semanage.c setugid.c setupenv.c \
sgetgrent.c sgetpwent.c sgetspent.c sgroupio.c sgroupio.h \
shadow.c shadow/grp/agetgroups.c shadow/grp/agetgroups.h \
shadowio.c shadowio.h shadowlog.c shadowlog.h \
shadowlog_internal.h shadowmem.c shell.c sizeof.h spawn.c \
sssd.c sssd.h string/ctype/strisascii/strisdigit.c \
string/ctype/strisascii/strisdigit.h string/memset/memzero.c \
string/memset/memzero.h string/sprintf/snprintf.c \
string/sprintf/snprintf.h string/sprintf/stpeprintf.c \
string/sprintf/stpeprintf.h string/sprintf/xasprintf.c \
string/sprintf/xasprintf.h string/strchr/strchrcnt.c \
string/strchr/strchrcnt.h string/strchr/stpspn.c \
string/strchr/stpspn.h string/strchr/strnul.c \
string/strchr/strnul.h string/strchr/strrspn.c \
string/strchr/strrspn.h string/strcmp/streq.c \
string/strchr/strchrcnt.h string/strchr/strchrscnt.c \
string/strchr/strchrscnt.h string/strchr/strnul.c \
string/strchr/strnul.h string/strcmp/strcaseeq.c \
string/strcmp/strcaseeq.h string/strcmp/streq.c \
string/strcmp/streq.h string/strcpy/stpecpy.c \
string/strcpy/stpecpy.h string/strcpy/strncat.c \
string/strcpy/strncat.h string/strcpy/strncpy.c \
@@ -733,6 +769,11 @@ libshadow_la_SOURCES = addgrps.c adds.c adds.h age.c agetpass.c \
string/strdup/strndupa.h string/strdup/xstrdup.c \
string/strdup/xstrdup.h string/strdup/xstrndup.c \
string/strdup/xstrndup.h string/strftime.c string/strftime.h \
string/strspn/stpspn.c string/strspn/stpspn.h \
string/strspn/stprcspn.c string/strspn/stprcspn.h \
string/strspn/stprspn.c string/strspn/stprspn.h \
string/strspn/strrcspn.c string/strspn/strrcspn.h \
string/strspn/strrspn.c string/strspn/strrspn.h \
string/strtok/stpsep.c string/strtok/stpsep.h strtoday.c sub.c \
subordinateio.h subordinateio.c sulog.c time/day_to_str.c \
time/day_to_str.h ttytype.c typetraits.h tz.c ulimit.c \
@@ -883,6 +924,49 @@ fs/readlink/libshadow_la-areadlink.lo: fs/readlink/$(am__dirstamp) \
fs/readlink/$(DEPDIR)/$(am__dirstamp)
fs/readlink/libshadow_la-readlinknul.lo: fs/readlink/$(am__dirstamp) \
fs/readlink/$(DEPDIR)/$(am__dirstamp)
search/cmp/$(am__dirstamp):
@$(MKDIR_P) search/cmp
@: > search/cmp/$(am__dirstamp)
search/cmp/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) search/cmp/$(DEPDIR)
@: > search/cmp/$(DEPDIR)/$(am__dirstamp)
search/cmp/libshadow_la-cmp.lo: search/cmp/$(am__dirstamp) \
search/cmp/$(DEPDIR)/$(am__dirstamp)
search/l/$(am__dirstamp):
@$(MKDIR_P) search/l
@: > search/l/$(am__dirstamp)
search/l/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) search/l/$(DEPDIR)
@: > search/l/$(DEPDIR)/$(am__dirstamp)
search/l/libshadow_la-lfind.lo: search/l/$(am__dirstamp) \
search/l/$(DEPDIR)/$(am__dirstamp)
search/l/libshadow_la-lsearch.lo: search/l/$(am__dirstamp) \
search/l/$(DEPDIR)/$(am__dirstamp)
search/sort/$(am__dirstamp):
@$(MKDIR_P) search/sort
@: > search/sort/$(am__dirstamp)
search/sort/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) search/sort/$(DEPDIR)
@: > search/sort/$(DEPDIR)/$(am__dirstamp)
search/sort/libshadow_la-qsort.lo: search/sort/$(am__dirstamp) \
search/sort/$(DEPDIR)/$(am__dirstamp)
shadow/grp/$(am__dirstamp):
@$(MKDIR_P) shadow/grp
@: > shadow/grp/$(am__dirstamp)
shadow/grp/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) shadow/grp/$(DEPDIR)
@: > shadow/grp/$(DEPDIR)/$(am__dirstamp)
shadow/grp/libshadow_la-agetgroups.lo: shadow/grp/$(am__dirstamp) \
shadow/grp/$(DEPDIR)/$(am__dirstamp)
string/ctype/strisascii/$(am__dirstamp):
@$(MKDIR_P) string/ctype/strisascii
@: > string/ctype/strisascii/$(am__dirstamp)
string/ctype/strisascii/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) string/ctype/strisascii/$(DEPDIR)
@: > string/ctype/strisascii/$(DEPDIR)/$(am__dirstamp)
string/ctype/strisascii/libshadow_la-strisdigit.lo: \
string/ctype/strisascii/$(am__dirstamp) \
string/ctype/strisascii/$(DEPDIR)/$(am__dirstamp)
string/memset/$(am__dirstamp):
@$(MKDIR_P) string/memset
@: > string/memset/$(am__dirstamp)
@@ -915,18 +999,20 @@ string/strchr/$(DEPDIR)/$(am__dirstamp):
string/strchr/libshadow_la-strchrcnt.lo: \
string/strchr/$(am__dirstamp) \
string/strchr/$(DEPDIR)/$(am__dirstamp)
string/strchr/libshadow_la-stpspn.lo: string/strchr/$(am__dirstamp) \
string/strchr/libshadow_la-strchrscnt.lo: \
string/strchr/$(am__dirstamp) \
string/strchr/$(DEPDIR)/$(am__dirstamp)
string/strchr/libshadow_la-strnul.lo: string/strchr/$(am__dirstamp) \
string/strchr/$(DEPDIR)/$(am__dirstamp)
string/strchr/libshadow_la-strrspn.lo: string/strchr/$(am__dirstamp) \
string/strchr/$(DEPDIR)/$(am__dirstamp)
string/strcmp/$(am__dirstamp):
@$(MKDIR_P) string/strcmp
@: > string/strcmp/$(am__dirstamp)
string/strcmp/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) string/strcmp/$(DEPDIR)
@: > string/strcmp/$(DEPDIR)/$(am__dirstamp)
string/strcmp/libshadow_la-strcaseeq.lo: \
string/strcmp/$(am__dirstamp) \
string/strcmp/$(DEPDIR)/$(am__dirstamp)
string/strcmp/libshadow_la-streq.lo: string/strcmp/$(am__dirstamp) \
string/strcmp/$(DEPDIR)/$(am__dirstamp)
string/strcpy/$(am__dirstamp):
@@ -963,6 +1049,22 @@ string/$(DEPDIR)/$(am__dirstamp):
@: > string/$(DEPDIR)/$(am__dirstamp)
string/libshadow_la-strftime.lo: string/$(am__dirstamp) \
string/$(DEPDIR)/$(am__dirstamp)
string/strspn/$(am__dirstamp):
@$(MKDIR_P) string/strspn
@: > string/strspn/$(am__dirstamp)
string/strspn/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) string/strspn/$(DEPDIR)
@: > string/strspn/$(DEPDIR)/$(am__dirstamp)
string/strspn/libshadow_la-stpspn.lo: string/strspn/$(am__dirstamp) \
string/strspn/$(DEPDIR)/$(am__dirstamp)
string/strspn/libshadow_la-stprcspn.lo: string/strspn/$(am__dirstamp) \
string/strspn/$(DEPDIR)/$(am__dirstamp)
string/strspn/libshadow_la-stprspn.lo: string/strspn/$(am__dirstamp) \
string/strspn/$(DEPDIR)/$(am__dirstamp)
string/strspn/libshadow_la-strrcspn.lo: string/strspn/$(am__dirstamp) \
string/strspn/$(DEPDIR)/$(am__dirstamp)
string/strspn/libshadow_la-strrspn.lo: string/strspn/$(am__dirstamp) \
string/strspn/$(DEPDIR)/$(am__dirstamp)
string/strtok/$(am__dirstamp):
@$(MKDIR_P) string/strtok
@: > string/strtok/$(am__dirstamp)
@@ -999,8 +1101,18 @@ mostlyclean-compile:
-rm -f atoi/strtoi/*.lo
-rm -f fs/readlink/*.$(OBJEXT)
-rm -f fs/readlink/*.lo
-rm -f search/cmp/*.$(OBJEXT)
-rm -f search/cmp/*.lo
-rm -f search/l/*.$(OBJEXT)
-rm -f search/l/*.lo
-rm -f search/sort/*.$(OBJEXT)
-rm -f search/sort/*.lo
-rm -f shadow/grp/*.$(OBJEXT)
-rm -f shadow/grp/*.lo
-rm -f string/*.$(OBJEXT)
-rm -f string/*.lo
-rm -f string/ctype/strisascii/*.$(OBJEXT)
-rm -f string/ctype/strisascii/*.lo
-rm -f string/memset/*.$(OBJEXT)
-rm -f string/memset/*.lo
-rm -f string/sprintf/*.$(OBJEXT)
@@ -1013,6 +1125,8 @@ mostlyclean-compile:
-rm -f string/strcpy/*.lo
-rm -f string/strdup/*.$(OBJEXT)
-rm -f string/strdup/*.lo
-rm -f string/strspn/*.$(OBJEXT)
-rm -f string/strspn/*.lo
-rm -f string/strtok/*.$(OBJEXT)
-rm -f string/strtok/*.lo
-rm -f time/*.$(OBJEXT)
@@ -1146,15 +1260,21 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@atoi/strtoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@fs/readlink/$(DEPDIR)/libshadow_la-areadlink.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@fs/readlink/$(DEPDIR)/libshadow_la-readlinknul.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@search/cmp/$(DEPDIR)/libshadow_la-cmp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@search/l/$(DEPDIR)/libshadow_la-lfind.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@search/l/$(DEPDIR)/libshadow_la-lsearch.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@search/sort/$(DEPDIR)/libshadow_la-qsort.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/libshadow_la-strftime.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/memset/$(DEPDIR)/libshadow_la-memzero.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/sprintf/$(DEPDIR)/libshadow_la-snprintf.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/sprintf/$(DEPDIR)/libshadow_la-stpeprintf.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/sprintf/$(DEPDIR)/libshadow_la-xasprintf.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strchr/$(DEPDIR)/libshadow_la-stpspn.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strchr/$(DEPDIR)/libshadow_la-strchrcnt.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strchr/$(DEPDIR)/libshadow_la-strnul.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strchr/$(DEPDIR)/libshadow_la-strrspn.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strcmp/$(DEPDIR)/libshadow_la-streq.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strcpy/$(DEPDIR)/libshadow_la-strncat.Plo@am__quote@ # am--include-marker
@@ -1163,6 +1283,11 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@string/strdup/$(DEPDIR)/libshadow_la-strndupa.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strdup/$(DEPDIR)/libshadow_la-xstrndup.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strspn/$(DEPDIR)/libshadow_la-stprspn.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strspn/$(DEPDIR)/libshadow_la-stpspn.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strspn/$(DEPDIR)/libshadow_la-strrcspn.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strspn/$(DEPDIR)/libshadow_la-strrspn.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@time/$(DEPDIR)/libshadow_la-day_to_str.Plo@am__quote@ # am--include-marker
@@ -1798,6 +1923,34 @@ libshadow_la-salt.lo: salt.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-salt.lo `test -f 'salt.c' || echo '$(srcdir)/'`salt.c
search/cmp/libshadow_la-cmp.lo: search/cmp/cmp.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT search/cmp/libshadow_la-cmp.lo -MD -MP -MF search/cmp/$(DEPDIR)/libshadow_la-cmp.Tpo -c -o search/cmp/libshadow_la-cmp.lo `test -f 'search/cmp/cmp.c' || echo '$(srcdir)/'`search/cmp/cmp.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) search/cmp/$(DEPDIR)/libshadow_la-cmp.Tpo search/cmp/$(DEPDIR)/libshadow_la-cmp.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='search/cmp/cmp.c' object='search/cmp/libshadow_la-cmp.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o search/cmp/libshadow_la-cmp.lo `test -f 'search/cmp/cmp.c' || echo '$(srcdir)/'`search/cmp/cmp.c
search/l/libshadow_la-lfind.lo: search/l/lfind.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT search/l/libshadow_la-lfind.lo -MD -MP -MF search/l/$(DEPDIR)/libshadow_la-lfind.Tpo -c -o search/l/libshadow_la-lfind.lo `test -f 'search/l/lfind.c' || echo '$(srcdir)/'`search/l/lfind.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) search/l/$(DEPDIR)/libshadow_la-lfind.Tpo search/l/$(DEPDIR)/libshadow_la-lfind.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='search/l/lfind.c' object='search/l/libshadow_la-lfind.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o search/l/libshadow_la-lfind.lo `test -f 'search/l/lfind.c' || echo '$(srcdir)/'`search/l/lfind.c
search/l/libshadow_la-lsearch.lo: search/l/lsearch.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT search/l/libshadow_la-lsearch.lo -MD -MP -MF search/l/$(DEPDIR)/libshadow_la-lsearch.Tpo -c -o search/l/libshadow_la-lsearch.lo `test -f 'search/l/lsearch.c' || echo '$(srcdir)/'`search/l/lsearch.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) search/l/$(DEPDIR)/libshadow_la-lsearch.Tpo search/l/$(DEPDIR)/libshadow_la-lsearch.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='search/l/lsearch.c' object='search/l/libshadow_la-lsearch.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o search/l/libshadow_la-lsearch.lo `test -f 'search/l/lsearch.c' || echo '$(srcdir)/'`search/l/lsearch.c
search/sort/libshadow_la-qsort.lo: search/sort/qsort.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT search/sort/libshadow_la-qsort.lo -MD -MP -MF search/sort/$(DEPDIR)/libshadow_la-qsort.Tpo -c -o search/sort/libshadow_la-qsort.lo `test -f 'search/sort/qsort.c' || echo '$(srcdir)/'`search/sort/qsort.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) search/sort/$(DEPDIR)/libshadow_la-qsort.Tpo search/sort/$(DEPDIR)/libshadow_la-qsort.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='search/sort/qsort.c' object='search/sort/libshadow_la-qsort.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o search/sort/libshadow_la-qsort.lo `test -f 'search/sort/qsort.c' || echo '$(srcdir)/'`search/sort/qsort.c
libshadow_la-selinux.lo: selinux.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-selinux.lo -MD -MP -MF $(DEPDIR)/libshadow_la-selinux.Tpo -c -o libshadow_la-selinux.lo `test -f 'selinux.c' || echo '$(srcdir)/'`selinux.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-selinux.Tpo $(DEPDIR)/libshadow_la-selinux.Plo
@@ -1861,6 +2014,13 @@ libshadow_la-shadow.lo: shadow.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-shadow.lo `test -f 'shadow.c' || echo '$(srcdir)/'`shadow.c
shadow/grp/libshadow_la-agetgroups.lo: shadow/grp/agetgroups.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT shadow/grp/libshadow_la-agetgroups.lo -MD -MP -MF shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Tpo -c -o shadow/grp/libshadow_la-agetgroups.lo `test -f 'shadow/grp/agetgroups.c' || echo '$(srcdir)/'`shadow/grp/agetgroups.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Tpo shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadow/grp/agetgroups.c' object='shadow/grp/libshadow_la-agetgroups.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o shadow/grp/libshadow_la-agetgroups.lo `test -f 'shadow/grp/agetgroups.c' || echo '$(srcdir)/'`shadow/grp/agetgroups.c
libshadow_la-shadowio.lo: shadowio.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-shadowio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-shadowio.Tpo -c -o libshadow_la-shadowio.lo `test -f 'shadowio.c' || echo '$(srcdir)/'`shadowio.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-shadowio.Tpo $(DEPDIR)/libshadow_la-shadowio.Plo
@@ -1903,6 +2063,13 @@ libshadow_la-sssd.lo: sssd.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-sssd.lo `test -f 'sssd.c' || echo '$(srcdir)/'`sssd.c
string/ctype/strisascii/libshadow_la-strisdigit.lo: string/ctype/strisascii/strisdigit.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/ctype/strisascii/libshadow_la-strisdigit.lo -MD -MP -MF string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Tpo -c -o string/ctype/strisascii/libshadow_la-strisdigit.lo `test -f 'string/ctype/strisascii/strisdigit.c' || echo '$(srcdir)/'`string/ctype/strisascii/strisdigit.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Tpo string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/ctype/strisascii/strisdigit.c' object='string/ctype/strisascii/libshadow_la-strisdigit.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/ctype/strisascii/libshadow_la-strisdigit.lo `test -f 'string/ctype/strisascii/strisdigit.c' || echo '$(srcdir)/'`string/ctype/strisascii/strisdigit.c
string/memset/libshadow_la-memzero.lo: string/memset/memzero.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/memset/libshadow_la-memzero.lo -MD -MP -MF string/memset/$(DEPDIR)/libshadow_la-memzero.Tpo -c -o string/memset/libshadow_la-memzero.lo `test -f 'string/memset/memzero.c' || echo '$(srcdir)/'`string/memset/memzero.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/memset/$(DEPDIR)/libshadow_la-memzero.Tpo string/memset/$(DEPDIR)/libshadow_la-memzero.Plo
@@ -1938,12 +2105,12 @@ string/strchr/libshadow_la-strchrcnt.lo: string/strchr/strchrcnt.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strchr/libshadow_la-strchrcnt.lo `test -f 'string/strchr/strchrcnt.c' || echo '$(srcdir)/'`string/strchr/strchrcnt.c
string/strchr/libshadow_la-stpspn.lo: string/strchr/stpspn.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strchr/libshadow_la-stpspn.lo -MD -MP -MF string/strchr/$(DEPDIR)/libshadow_la-stpspn.Tpo -c -o string/strchr/libshadow_la-stpspn.lo `test -f 'string/strchr/stpspn.c' || echo '$(srcdir)/'`string/strchr/stpspn.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strchr/$(DEPDIR)/libshadow_la-stpspn.Tpo string/strchr/$(DEPDIR)/libshadow_la-stpspn.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strchr/stpspn.c' object='string/strchr/libshadow_la-stpspn.lo' libtool=yes @AMDEPBACKSLASH@
string/strchr/libshadow_la-strchrscnt.lo: string/strchr/strchrscnt.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strchr/libshadow_la-strchrscnt.lo -MD -MP -MF string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Tpo -c -o string/strchr/libshadow_la-strchrscnt.lo `test -f 'string/strchr/strchrscnt.c' || echo '$(srcdir)/'`string/strchr/strchrscnt.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Tpo string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strchr/strchrscnt.c' object='string/strchr/libshadow_la-strchrscnt.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strchr/libshadow_la-stpspn.lo `test -f 'string/strchr/stpspn.c' || echo '$(srcdir)/'`string/strchr/stpspn.c
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strchr/libshadow_la-strchrscnt.lo `test -f 'string/strchr/strchrscnt.c' || echo '$(srcdir)/'`string/strchr/strchrscnt.c
string/strchr/libshadow_la-strnul.lo: string/strchr/strnul.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strchr/libshadow_la-strnul.lo -MD -MP -MF string/strchr/$(DEPDIR)/libshadow_la-strnul.Tpo -c -o string/strchr/libshadow_la-strnul.lo `test -f 'string/strchr/strnul.c' || echo '$(srcdir)/'`string/strchr/strnul.c
@@ -1952,12 +2119,12 @@ string/strchr/libshadow_la-strnul.lo: string/strchr/strnul.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strchr/libshadow_la-strnul.lo `test -f 'string/strchr/strnul.c' || echo '$(srcdir)/'`string/strchr/strnul.c
string/strchr/libshadow_la-strrspn.lo: string/strchr/strrspn.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strchr/libshadow_la-strrspn.lo -MD -MP -MF string/strchr/$(DEPDIR)/libshadow_la-strrspn.Tpo -c -o string/strchr/libshadow_la-strrspn.lo `test -f 'string/strchr/strrspn.c' || echo '$(srcdir)/'`string/strchr/strrspn.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strchr/$(DEPDIR)/libshadow_la-strrspn.Tpo string/strchr/$(DEPDIR)/libshadow_la-strrspn.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strchr/strrspn.c' object='string/strchr/libshadow_la-strrspn.lo' libtool=yes @AMDEPBACKSLASH@
string/strcmp/libshadow_la-strcaseeq.lo: string/strcmp/strcaseeq.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strcmp/libshadow_la-strcaseeq.lo -MD -MP -MF string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Tpo -c -o string/strcmp/libshadow_la-strcaseeq.lo `test -f 'string/strcmp/strcaseeq.c' || echo '$(srcdir)/'`string/strcmp/strcaseeq.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Tpo string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strcmp/strcaseeq.c' object='string/strcmp/libshadow_la-strcaseeq.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strchr/libshadow_la-strrspn.lo `test -f 'string/strchr/strrspn.c' || echo '$(srcdir)/'`string/strchr/strrspn.c
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strcmp/libshadow_la-strcaseeq.lo `test -f 'string/strcmp/strcaseeq.c' || echo '$(srcdir)/'`string/strcmp/strcaseeq.c
string/strcmp/libshadow_la-streq.lo: string/strcmp/streq.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strcmp/libshadow_la-streq.lo -MD -MP -MF string/strcmp/$(DEPDIR)/libshadow_la-streq.Tpo -c -o string/strcmp/libshadow_la-streq.lo `test -f 'string/strcmp/streq.c' || echo '$(srcdir)/'`string/strcmp/streq.c
@@ -2022,6 +2189,41 @@ string/libshadow_la-strftime.lo: string/strftime.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/libshadow_la-strftime.lo `test -f 'string/strftime.c' || echo '$(srcdir)/'`string/strftime.c
string/strspn/libshadow_la-stpspn.lo: string/strspn/stpspn.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strspn/libshadow_la-stpspn.lo -MD -MP -MF string/strspn/$(DEPDIR)/libshadow_la-stpspn.Tpo -c -o string/strspn/libshadow_la-stpspn.lo `test -f 'string/strspn/stpspn.c' || echo '$(srcdir)/'`string/strspn/stpspn.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strspn/$(DEPDIR)/libshadow_la-stpspn.Tpo string/strspn/$(DEPDIR)/libshadow_la-stpspn.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strspn/stpspn.c' object='string/strspn/libshadow_la-stpspn.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strspn/libshadow_la-stpspn.lo `test -f 'string/strspn/stpspn.c' || echo '$(srcdir)/'`string/strspn/stpspn.c
string/strspn/libshadow_la-stprcspn.lo: string/strspn/stprcspn.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strspn/libshadow_la-stprcspn.lo -MD -MP -MF string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Tpo -c -o string/strspn/libshadow_la-stprcspn.lo `test -f 'string/strspn/stprcspn.c' || echo '$(srcdir)/'`string/strspn/stprcspn.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Tpo string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strspn/stprcspn.c' object='string/strspn/libshadow_la-stprcspn.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strspn/libshadow_la-stprcspn.lo `test -f 'string/strspn/stprcspn.c' || echo '$(srcdir)/'`string/strspn/stprcspn.c
string/strspn/libshadow_la-stprspn.lo: string/strspn/stprspn.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strspn/libshadow_la-stprspn.lo -MD -MP -MF string/strspn/$(DEPDIR)/libshadow_la-stprspn.Tpo -c -o string/strspn/libshadow_la-stprspn.lo `test -f 'string/strspn/stprspn.c' || echo '$(srcdir)/'`string/strspn/stprspn.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strspn/$(DEPDIR)/libshadow_la-stprspn.Tpo string/strspn/$(DEPDIR)/libshadow_la-stprspn.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strspn/stprspn.c' object='string/strspn/libshadow_la-stprspn.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strspn/libshadow_la-stprspn.lo `test -f 'string/strspn/stprspn.c' || echo '$(srcdir)/'`string/strspn/stprspn.c
string/strspn/libshadow_la-strrcspn.lo: string/strspn/strrcspn.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strspn/libshadow_la-strrcspn.lo -MD -MP -MF string/strspn/$(DEPDIR)/libshadow_la-strrcspn.Tpo -c -o string/strspn/libshadow_la-strrcspn.lo `test -f 'string/strspn/strrcspn.c' || echo '$(srcdir)/'`string/strspn/strrcspn.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strspn/$(DEPDIR)/libshadow_la-strrcspn.Tpo string/strspn/$(DEPDIR)/libshadow_la-strrcspn.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strspn/strrcspn.c' object='string/strspn/libshadow_la-strrcspn.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strspn/libshadow_la-strrcspn.lo `test -f 'string/strspn/strrcspn.c' || echo '$(srcdir)/'`string/strspn/strrcspn.c
string/strspn/libshadow_la-strrspn.lo: string/strspn/strrspn.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strspn/libshadow_la-strrspn.lo -MD -MP -MF string/strspn/$(DEPDIR)/libshadow_la-strrspn.Tpo -c -o string/strspn/libshadow_la-strrspn.lo `test -f 'string/strspn/strrspn.c' || echo '$(srcdir)/'`string/strspn/strrspn.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strspn/$(DEPDIR)/libshadow_la-strrspn.Tpo string/strspn/$(DEPDIR)/libshadow_la-strrspn.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strspn/strrspn.c' object='string/strspn/libshadow_la-strrspn.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strspn/libshadow_la-strrspn.lo `test -f 'string/strspn/strrspn.c' || echo '$(srcdir)/'`string/strspn/strrspn.c
string/strtok/libshadow_la-stpsep.lo: string/strtok/stpsep.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strtok/libshadow_la-stpsep.lo -MD -MP -MF string/strtok/$(DEPDIR)/libshadow_la-stpsep.Tpo -c -o string/strtok/libshadow_la-stpsep.lo `test -f 'string/strtok/stpsep.c' || echo '$(srcdir)/'`string/strtok/stpsep.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strtok/$(DEPDIR)/libshadow_la-stpsep.Tpo string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo
@@ -2219,13 +2421,19 @@ clean-libtool:
-rm -rf atoi/str2i/.libs atoi/str2i/_libs
-rm -rf atoi/strtoi/.libs atoi/strtoi/_libs
-rm -rf fs/readlink/.libs fs/readlink/_libs
-rm -rf search/cmp/.libs search/cmp/_libs
-rm -rf search/l/.libs search/l/_libs
-rm -rf search/sort/.libs search/sort/_libs
-rm -rf shadow/grp/.libs shadow/grp/_libs
-rm -rf string/.libs string/_libs
-rm -rf string/ctype/strisascii/.libs string/ctype/strisascii/_libs
-rm -rf string/memset/.libs string/memset/_libs
-rm -rf string/sprintf/.libs string/sprintf/_libs
-rm -rf string/strchr/.libs string/strchr/_libs
-rm -rf string/strcmp/.libs string/strcmp/_libs
-rm -rf string/strcpy/.libs string/strcpy/_libs
-rm -rf string/strdup/.libs string/strdup/_libs
-rm -rf string/strspn/.libs string/strspn/_libs
-rm -rf string/strtok/.libs string/strtok/_libs
-rm -rf time/.libs time/_libs
@@ -2357,8 +2565,18 @@ distclean-generic:
-rm -f atoi/strtoi/$(am__dirstamp)
-rm -f fs/readlink/$(DEPDIR)/$(am__dirstamp)
-rm -f fs/readlink/$(am__dirstamp)
-rm -f search/cmp/$(DEPDIR)/$(am__dirstamp)
-rm -f search/cmp/$(am__dirstamp)
-rm -f search/l/$(DEPDIR)/$(am__dirstamp)
-rm -f search/l/$(am__dirstamp)
-rm -f search/sort/$(DEPDIR)/$(am__dirstamp)
-rm -f search/sort/$(am__dirstamp)
-rm -f shadow/grp/$(DEPDIR)/$(am__dirstamp)
-rm -f shadow/grp/$(am__dirstamp)
-rm -f string/$(DEPDIR)/$(am__dirstamp)
-rm -f string/$(am__dirstamp)
-rm -f string/ctype/strisascii/$(DEPDIR)/$(am__dirstamp)
-rm -f string/ctype/strisascii/$(am__dirstamp)
-rm -f string/memset/$(DEPDIR)/$(am__dirstamp)
-rm -f string/memset/$(am__dirstamp)
-rm -f string/sprintf/$(DEPDIR)/$(am__dirstamp)
@@ -2371,6 +2589,8 @@ distclean-generic:
-rm -f string/strcpy/$(am__dirstamp)
-rm -f string/strdup/$(DEPDIR)/$(am__dirstamp)
-rm -f string/strdup/$(am__dirstamp)
-rm -f string/strspn/$(DEPDIR)/$(am__dirstamp)
-rm -f string/strspn/$(am__dirstamp)
-rm -f string/strtok/$(DEPDIR)/$(am__dirstamp)
-rm -f string/strtok/$(am__dirstamp)
-rm -f time/$(DEPDIR)/$(am__dirstamp)
@@ -2511,15 +2731,21 @@ distclean: distclean-am
-rm -f atoi/strtoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo
-rm -f fs/readlink/$(DEPDIR)/libshadow_la-areadlink.Plo
-rm -f fs/readlink/$(DEPDIR)/libshadow_la-readlinknul.Plo
-rm -f search/cmp/$(DEPDIR)/libshadow_la-cmp.Plo
-rm -f search/l/$(DEPDIR)/libshadow_la-lfind.Plo
-rm -f search/l/$(DEPDIR)/libshadow_la-lsearch.Plo
-rm -f search/sort/$(DEPDIR)/libshadow_la-qsort.Plo
-rm -f shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Plo
-rm -f string/$(DEPDIR)/libshadow_la-strftime.Plo
-rm -f string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Plo
-rm -f string/memset/$(DEPDIR)/libshadow_la-memzero.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-snprintf.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-stpeprintf.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-xasprintf.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-stpspn.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strchrcnt.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strnul.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strrspn.Plo
-rm -f string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Plo
-rm -f string/strcmp/$(DEPDIR)/libshadow_la-streq.Plo
-rm -f string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo
-rm -f string/strcpy/$(DEPDIR)/libshadow_la-strncat.Plo
@@ -2528,6 +2754,11 @@ distclean: distclean-am
-rm -f string/strdup/$(DEPDIR)/libshadow_la-strndupa.Plo
-rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo
-rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrndup.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-stprspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-stpspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-strrcspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-strrspn.Plo
-rm -f string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo
-rm -f time/$(DEPDIR)/libshadow_la-day_to_str.Plo
-rm -f Makefile
@@ -2700,15 +2931,21 @@ maintainer-clean: maintainer-clean-am
-rm -f atoi/strtoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo
-rm -f fs/readlink/$(DEPDIR)/libshadow_la-areadlink.Plo
-rm -f fs/readlink/$(DEPDIR)/libshadow_la-readlinknul.Plo
-rm -f search/cmp/$(DEPDIR)/libshadow_la-cmp.Plo
-rm -f search/l/$(DEPDIR)/libshadow_la-lfind.Plo
-rm -f search/l/$(DEPDIR)/libshadow_la-lsearch.Plo
-rm -f search/sort/$(DEPDIR)/libshadow_la-qsort.Plo
-rm -f shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Plo
-rm -f string/$(DEPDIR)/libshadow_la-strftime.Plo
-rm -f string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Plo
-rm -f string/memset/$(DEPDIR)/libshadow_la-memzero.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-snprintf.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-stpeprintf.Plo
-rm -f string/sprintf/$(DEPDIR)/libshadow_la-xasprintf.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-stpspn.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strchrcnt.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strnul.Plo
-rm -f string/strchr/$(DEPDIR)/libshadow_la-strrspn.Plo
-rm -f string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Plo
-rm -f string/strcmp/$(DEPDIR)/libshadow_la-streq.Plo
-rm -f string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo
-rm -f string/strcpy/$(DEPDIR)/libshadow_la-strncat.Plo
@@ -2717,6 +2954,11 @@ maintainer-clean: maintainer-clean-am
-rm -f string/strdup/$(DEPDIR)/libshadow_la-strndupa.Plo
-rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo
-rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrndup.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-stprspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-stpspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-strrcspn.Plo
-rm -f string/strspn/$(DEPDIR)/libshadow_la-strrspn.Plo
-rm -f string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo
-rm -f time/$(DEPDIR)/libshadow_la-day_to_str.Plo
-rm -f Makefile
+38 -73
View File
@@ -1,15 +1,14 @@
/*
* SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh
* SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz
* SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko
* SPDX-FileCopyrightText: 2007 - 2009, Nicolas François
*
* SPDX-License-Identifier: BSD-3-Clause
*/
// SPDX-FileCopyrightText: 1989-1994, Julianne Frances Haugh
// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz
// SPDX-FileCopyrightText: 2001-2006, Tomasz Kłoczko
// SPDX-FileCopyrightText: 2007-2009, Nicolas François
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
#if defined (HAVE_SETGROUPS) && ! defined (USE_PAM)
#if !defined(USE_PAM)
#include "prototypes.h"
#include "defines.h"
@@ -18,12 +17,14 @@
#include <grp.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include "alloc/malloc.h"
#include "alloc/reallocf.h"
#include "search/l/lsearch.h"
#include "shadow/grp/agetgroups.h"
#include "shadowlog.h"
#include "string/strchr/strchrscnt.h"
#ident "$Id$"
/*
* Add groups with names from LIST (separated by commas or colons)
@@ -33,48 +34,25 @@
int
add_groups(const char *list)
{
GETGROUPS_T *grouplist;
size_t i;
int ngroups;
bool added;
char *g, *p;
char buf[1024];
int ret;
char *g, *p, *dup;
FILE *shadow_logfd = log_get_logfd();
gid_t *gids;
size_t n;
if (strlen (list) >= sizeof (buf)) {
errno = EINVAL;
gids = agetgroups(&n);
if (gids == NULL)
return -1;
}
strcpy (buf, list);
i = 16;
for (;;) {
grouplist = MALLOC(i, GETGROUPS_T);
if (NULL == grouplist) {
return -1;
}
ngroups = getgroups (i, grouplist);
if ( ( (-1 == ngroups)
&& (EINVAL != errno))
|| (i > (size_t)ngroups)) {
/* Unexpected failure of getgroups or successful
* reception of the groups */
break;
}
/* not enough room, so try allocating a larger buffer */
free (grouplist);
i *= 2;
}
if (ngroups < 0) {
free (grouplist);
gids = REALLOCF(gids, n + strchrscnt(list, ",:") + 1, gid_t);
if (gids == NULL)
return -1;
}
added = false;
p = buf;
p = dup = strdup(list);
if (dup == NULL)
goto free_gids;
while (NULL != (g = strsep(&p, ",:"))) {
struct group *grp;
struct group *grp;
grp = getgrnam(g); /* local, no need for xgetgrnam */
if (NULL == grp) {
@@ -82,35 +60,22 @@ add_groups(const char *list)
continue;
}
for (i = 0; i < (size_t)ngroups && grouplist[i] != grp->gr_gid; i++);
LSEARCH(&grp->gr_gid, gids, &n);
}
free(dup);
if (i < (size_t)ngroups) {
continue;
}
if (ngroups >= sysconf (_SC_NGROUPS_MAX)) {
fputs (_("Warning: too many groups\n"), shadow_logfd);
break;
}
grouplist = REALLOCF(grouplist, (size_t) ngroups + 1, GETGROUPS_T);
if (grouplist == NULL) {
return -1;
}
grouplist[ngroups] = grp->gr_gid;
ngroups++;
added = true;
if (setgroups(n, gids) == -1) {
fprintf(shadow_logfd, "setgroups: %s\n", strerror(errno));
goto free_gids;
}
if (added) {
ret = setgroups (ngroups, grouplist);
free (grouplist);
return ret;
}
free (grouplist);
free(gids);
return 0;
}
#else /* HAVE_SETGROUPS && !USE_PAM */
extern int ISO_C_forbids_an_empty_translation_unit;
#endif /* HAVE_SETGROUPS && !USE_PAM */
free_gids:
free(gids);
return -1;
}
#else /* !USE_PAM */
extern int ISO_C_forbids_an_empty_translation_unit;
#endif /* !USE_PAM */
-2
View File
@@ -11,5 +11,3 @@
extern inline long addsl2(long a, long b);
extern inline long addslN(size_t n, long addend[n]);
extern inline int cmpl(const void *p1, const void *p2);
+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
@@ -11,8 +11,8 @@
#include <errno.h>
#include <limits.h>
#include <stddef.h>
#include <stdlib.h>
#include "search/sort/qsort.h"
#include "sizeof.h"
@@ -27,8 +27,6 @@
inline long addsl2(long a, long b);
inline long addslN(size_t n, long addend[n]);
inline int cmpl(const void *p1, const void *p2);
inline long
addsl2(long a, long b)
@@ -57,7 +55,7 @@ addslN(size_t n, long addend[n])
e = errno;
while (n > 1) {
qsort(addend, n, sizeof(addend[0]), cmpl);
QSORT(addend, n);
errno = 0;
addend[0] = addsl2(addend[0], addend[--n]);
@@ -69,18 +67,4 @@ addslN(size_t n, long addend[n])
}
inline int
cmpl(const void *p1, const void *p2)
{
const long *l1 = p1;
const long *l2 = p2;
if (*l1 < *l2)
return -1;
if (*l1 > *l2)
return +1;
return 0;
}
#endif // include guard
+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
* it from the command line while logged in.
*/
#if defined(HAVE_INITGROUPS) && ! defined(USE_PAM)
#if !defined(USE_PAM)
if (setup_uid_gid (pw, false) != 0)
#else
if (setup_uid_gid (pw) != 0)
+13 -13
View File
@@ -1,10 +1,8 @@
/*
* SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh
* SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz
* SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko
*
* SPDX-License-Identifier: BSD-3-Clause
*/
// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh
// SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz
// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
/*
* basename.c - not worth copyrighting :-). Some versions of Linux libc
@@ -15,17 +13,19 @@
#include <config.h>
#ident "$Id$"
#include <stddef.h>
#include <stdlib.h>
#include "defines.h"
#include "prototypes.h"
/*@observer@*/const char *Basename (const char *str)
#include "string/strspn/stprcspn.h"
/*@observer@*/const char *
Basename(const char *str)
{
if (str == NULL) {
abort ();
}
char *cp = strrchr (str, '/');
return (NULL != cp) ? cp + 1 : str;
return stprcspn(str, "/");
}
+10 -13
View File
@@ -31,6 +31,7 @@
#include "defines.h"
#include "chkname.h"
#include "string/ctype/strisascii/strisdigit.h"
#include "string/strcmp/streq.h"
@@ -71,11 +72,15 @@ is_valid_name(const char *name)
*
* Also do not allow fully numeric names or just "." or "..".
*/
int numeric;
if ('\0' == *name ||
('.' == *name && (('.' == name[1] && '\0' == name[2]) ||
'\0' == name[1])) ||
if (strisdigit(name)) {
errno = EINVAL;
return false;
}
if (streq(name, "") ||
streq(name, ".") ||
streq(name, "..") ||
!((*name >= 'a' && *name <= 'z') ||
(*name >= 'A' && *name <= 'Z') ||
(*name >= '0' && *name <= '9') ||
@@ -86,8 +91,6 @@ is_valid_name(const char *name)
return false;
}
numeric = isdigit(*name);
while (!streq(++name, "")) {
if (!((*name >= 'a' && *name <= 'z') ||
(*name >= 'A' && *name <= 'Z') ||
@@ -95,18 +98,12 @@ is_valid_name(const char *name)
*name == '_' ||
*name == '.' ||
*name == '-' ||
(*name == '$' && name[1] == '\0')
streq(name, "$")
))
{
errno = EINVAL;
return false;
}
numeric &= isdigit(*name);
}
if (numeric) {
errno = EINVAL;
return false;
}
return true;
+14 -14
View File
@@ -891,7 +891,7 @@ static int write_all (const struct commonio_db *db)
int commonio_close (struct commonio_db *db)
{
int errors = 0;
bool errors = false;
char buf[1024];
struct stat sb;
@@ -932,25 +932,25 @@ int commonio_close (struct commonio_db *db)
#ifdef WITH_SELINUX
if (set_selinux_file_context (db->filename, S_IFREG) != 0) {
errors++;
errors = true;
}
#endif
if (create_backup (buf, db->fp) != 0) {
errors++;
errors = true;
}
if (fclose (db->fp) != 0) {
errors++;
errors = true;
}
db->fp = NULL;
#ifdef WITH_SELINUX
if (reset_selinux_file_context () != 0) {
errors++;
errors = true;
}
#endif
if (errors != 0)
if (errors)
goto fail;
} else {
/*
@@ -966,7 +966,7 @@ int commonio_close (struct commonio_db *db)
#ifdef WITH_SELINUX
if (set_selinux_file_context (db->filename, S_IFREG) != 0) {
errors++;
errors = true;
}
#endif
@@ -976,24 +976,24 @@ int commonio_close (struct commonio_db *db)
}
if (write_all (db) != 0) {
errors++;
errors = true;
}
if (fflush (db->fp) != 0) {
errors++;
errors = true;
}
if (fsync (fileno (db->fp)) != 0) {
errors++;
errors = true;
}
if (fclose (db->fp) != 0) {
errors++;
errors = true;
}
db->fp = NULL;
if (errors != 0) {
if (errors) {
unlink (buf);
goto fail;
}
@@ -1011,11 +1011,11 @@ int commonio_close (struct commonio_db *db)
nscd_need_reload = true;
goto success;
fail:
errors++;
errors = true;
success:
free_linked_list (db);
return errors == 0;
return !errors;
}
static /*@dependent@*/ /*@null@*/struct commonio_entry *next_entry_by_name (
+2 -2
View File
@@ -10,8 +10,8 @@
#include <stdint.h>
#include <stdlib.h>
#include <unistd.h>
#if HAVE_SYS_RANDOM_H
#include <sys/random.h>
#if __has_include(<sys/random.h>)
# include <sys/random.h>
#endif
#include "bit.h"
+2 -7
View File
@@ -41,7 +41,7 @@
* crypt(3), crypt_gensalt(3), and their
* feature test macros may be defined in here.
*/
#if HAVE_CRYPT_H
#if __has_include(<crypt.h>)
# include <crypt.h>
#endif
@@ -50,13 +50,8 @@
#include <dirent.h>
/*
* Possible cases:
* - /usr/include/shadow.h exists and includes the shadow group stuff.
* - /usr/include/shadow.h exists, but we use our own gshadow.h.
*/
#include <shadow.h>
#if defined(SHADOWGRP) && !defined(GSHADOW)
#if defined(SHADOWGRP)
#include "gshadow_.h"
#endif
+2 -1
View File
@@ -65,7 +65,8 @@
(void) fprintf (shadow_logfd,
_("crypt method not supported by libcrypt? (%s)\n"),
method);
exit (EXIT_FAILURE);
errno = EINVAL;
return NULL;
}
if (strlen (cp) != 13) {
+3 -3
View File
@@ -16,9 +16,9 @@
#include <stdio.h>
#include "prototypes.h"
#include "string/strchr/stpspn.h"
#include "string/strchr/strrspn.h"
#include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
#include "string/strspn/stprspn.h"
#include "string/strtok/stpsep.h"
@@ -93,7 +93,7 @@ change_field(char *buf, size_t maxsize, const char *prompt)
* makes it possible to change the field to empty, by
* entering a space. --marekm
*/
stpcpy(strrspn(newf, " \t"), "");
stpcpy(stprspn(newf, " \t"), "");
cp = stpspn(newf, " \t");
strcpy (buf, cp);
}
+1 -1
View File
@@ -101,8 +101,8 @@
#include "attr.h"
#include "getdate.h"
#include "string/strchr/stpspn.h"
#include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
/* Some old versions of bison generate parsers that use bcopy.
+1 -1
View File
@@ -31,8 +31,8 @@
#include "attr.h"
#include "getdate.h"
#include "string/strchr/stpspn.h"
#include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
/* Some old versions of bison generate parsers that use bcopy.
+5 -4
View File
@@ -30,9 +30,10 @@
#include "prototypes.h"
#include "shadowlog_internal.h"
#include "string/sprintf/xasprintf.h"
#include "string/strchr/stpspn.h"
#include "string/strchr/strrspn.h"
#include "string/strcmp/strcaseeq.h"
#include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
#include "string/strspn/stprspn.h"
#include "string/strtok/stpsep.h"
@@ -226,7 +227,7 @@ bool getdef_bool (const char *item)
return false;
}
return (strcasecmp (d->value, "yes") == 0);
return strcaseeq(d->value, "yes");
}
@@ -561,7 +562,7 @@ static void def_load (void)
/*
* Trim trailing whitespace.
*/
stpcpy(strrspn(buf, " \t\n"), "");
stpcpy(stprspn(buf, " \t\n"), "");
/*
* Break the line into two fields.
+6 -7
View File
@@ -9,8 +9,7 @@
#include <config.h>
/* Newer versions of Linux libc already have shadow support. */
#if defined(SHADOWGRP) && !defined(HAVE_SHADOWGRP) /*{ */
#if defined(SHADOWGRP) && !__has_include(<gshadow.h>)
#ident "$Id$"
@@ -107,7 +106,7 @@ sgetsgent(const char *string)
if (NULL != cp || i != FIELDS)
return NULL;
sgroup.sg_name = fields[0];
sgroup.sg_namp = fields[0];
sgroup.sg_passwd = fields[1];
free(sgroup.sg_adm);
@@ -193,7 +192,7 @@ sgetsgent(const char *string)
setsgent ();
while ((sgrp = getsgent ()) != NULL) {
if (streq(name, sgrp->sg_name)) {
if (streq(name, sgrp->sg_namp)) {
break;
}
}
@@ -219,7 +218,7 @@ int putsgent (const struct sgrp *sgrp, FILE * fp)
}
/* calculate the required buffer size */
size = strlen (sgrp->sg_name) + strlen (sgrp->sg_passwd) + 10;
size = strlen (sgrp->sg_namp) + strlen (sgrp->sg_passwd) + 10;
for (i = 0; (NULL != sgrp->sg_adm) && (NULL != sgrp->sg_adm[i]); i++) {
size += strlen (sgrp->sg_adm[i]) + 1;
}
@@ -236,7 +235,7 @@ int putsgent (const struct sgrp *sgrp, FILE * fp)
/*
* Copy the group name and passwd.
*/
cp = stpcpy(stpcpy(cp, sgrp->sg_name), ":");
cp = stpcpy(stpcpy(cp, sgrp->sg_namp), ":");
cp = stpcpy(stpcpy(cp, sgrp->sg_passwd), ":");
/*
@@ -276,4 +275,4 @@ int putsgent (const struct sgrp *sgrp, FILE * fp)
}
#else
extern int ISO_C_forbids_an_empty_translation_unit;
#endif /*} SHADOWGRP */
#endif // !SHADOWGRP
+17 -14
View File
@@ -1,24 +1,24 @@
/*
* SPDX-FileCopyrightText: 1988 - 1994, Julianne Frances Haugh
* SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz
* SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko
*
* SPDX-License-Identifier: BSD-3-Clause
*/
// SPDX-FileCopyrightText: 1988-1994, Julianne Frances Haugh
// SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz
// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
/*
* $Id$
*/
#ifndef _H_GSHADOW
#define _H_GSHADOW
#ifndef SHADOW_INCLUDE_LIB_GSHADOW__H_
#define SHADOW_INCLUDE_LIB_GSHADOW__H_
#if __has_include(<gshadow.h>)
# include <gshadow.h>
#else
/*
* Shadow group security file structure
*/
struct sgrp {
char *sg_name; /* group name */
char *sg_namp; /* group name */
char *sg_passwd; /* group password */
char **sg_adm; /* group administrator list */
char **sg_mem; /* group membership list */
@@ -39,4 +39,7 @@ void endsgent (void);
int putsgent (const struct sgrp *, FILE *);
#define GSHADOW "/etc/gshadow"
#endif /* ifndef _H_GSHADOW */
#endif // !__has_include(<gshadow.h>)
#endif // include guard
+4 -4
View File
@@ -12,9 +12,9 @@
#include <stdlib.h>
#include <stdio.h>
#include <strings.h>
#if HAVE_SYS_CAPABILITY_H
#include <sys/prctl.h>
#include <sys/capability.h>
#if __has_include(<sys/capability.h>)
# include <sys/capability.h>
#endif
#include "alloc/calloc.h"
@@ -86,7 +86,7 @@ get_map_ranges(int ranges, int argc, char **argv)
*/
#define ULONG_DIGITS (((WIDTHOF(unsigned long) + 9)/10)*3)
#if HAVE_SYS_CAPABILITY_H
#if __has_include(<sys/capability.h>)
static inline bool maps_lower_root(int cap, int ranges, const struct map_range *mappings)
{
int idx;
@@ -129,7 +129,7 @@ void write_mapping(int proc_dir_fd, int ranges, const struct map_range *mappings
char *buf, *pos, *end;
int fd;
#if HAVE_SYS_CAPABILITY_H
#if __has_include(<sys/capability.h>)
int cap;
struct __user_cap_header_struct hdr = {_LINUX_CAPABILITY_VERSION_3, 0};
struct __user_cap_data_struct data[2] = {{0}};
+1 -1
View File
@@ -36,8 +36,8 @@
#include "atoi/str2i/str2s.h"
#include "atoi/str2i/str2u.h"
#include "string/memset/memzero.h"
#include "string/strchr/stpspn.h"
#include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
#include "typetraits.h"
+1 -1
View File
@@ -20,8 +20,8 @@
#include "getdef.h"
#include "prototypes.h"
#include "string/memset/memzero.h"
#include "string/strchr/stpspn.h"
#include "string/strcpy/strtcpy.h"
#include "string/strspn/stpspn.h"
#include "string/strtok/stpsep.h"
+13 -12
View File
@@ -17,7 +17,6 @@
#include "defines.h"
#include "getdef.h"
#include "prototypes.h"
#include "string/strdup/xstrdup.h"
/*
@@ -27,7 +26,7 @@
* it to the user's terminal at login time. The MOTD_FILE configuration
* option is a colon-delimited list of filenames.
*/
void
int
motd(void)
{
FILE *fp;
@@ -37,24 +36,26 @@ motd(void)
int c;
motdfile = getdef_str ("MOTD_FILE");
if (NULL == motdfile) {
return;
}
if (NULL == motdfile)
return 0;
motdlist = xstrdup (motdfile);
motdlist = strdup(motdfile);
if (motdlist == NULL)
return -1;
mb = motdlist;
while (NULL != (motdfile = strsep(&mb, ":"))) {
fp = fopen (motdfile, "r");
if (NULL != fp) {
while ((c = getc (fp)) != EOF) {
putchar (c);
}
fclose (fp);
if (fp == NULL)
continue;
while ((c = getc(fp)) != EOF) {
putchar(c);
}
fclose(fp);
}
fflush (stdout);
free (motdlist);
return 0;
}
+1 -1
View File
@@ -15,8 +15,8 @@
#include "shadowlog_internal.h"
#include "shadowlog.h"
#include "string/sprintf/snprintf.h"
#include "string/strchr/stpspn.h"
#include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
#include "string/strtok/stpsep.h"
+3 -2
View File
@@ -6,11 +6,12 @@
*/
#include <config.h>
#include <security/pam_appl.h>
#ifdef HAVE_SECURITY_PAM_MISC_H
#if __has_include(<security/pam_misc.h>)
# include <security/pam_misc.h>
#endif
#ifdef HAVE_SECURITY_OPENPAM_H
#if __has_include(<security/openpam.h>)
# include <security/openpam.h>
#endif
+3 -3
View File
@@ -36,7 +36,7 @@
#include "commonio.h"
/* addgrps.c */
#if defined (HAVE_SETGROUPS) && ! defined (USE_PAM)
#if !defined(USE_PAM)
extern int add_groups (const char *);
#endif
@@ -222,7 +222,7 @@ extern void login_prompt (char *, int);
extern void mailcheck (void);
/* motd.c */
extern void motd (void);
extern int motd(void);
/* myname.c */
extern /*@null@*//*@only@*/struct passwd *get_my_pwent (void);
@@ -384,7 +384,7 @@ extern int del_seuser(const char *login_name);
/* setugid.c */
extern int setup_groups (const struct passwd *info);
extern int change_uid (const struct passwd *info);
#if (defined HAVE_INITGROUPS) && (! defined USE_PAM)
#if !defined(USE_PAM)
extern int setup_uid_gid (const struct passwd *info, bool is_console);
#else
extern int setup_uid_gid (const struct passwd *info);
+15 -48
View File
@@ -48,16 +48,15 @@ static const char *PROMPT = gettext_noop ("%s's Password: ");
* compared.
*/
int pw_auth (const char *cipher,
const char *user,
int reason,
/*@null@*/const char *input)
int
pw_auth(const char *cipher, const char *user)
{
int retval;
char prompt[1024];
char *clear = NULL;
char *clear;
const char *cp;
const char *encrypted;
const char *input;
#ifdef SKEY
bool use_skey = false;
@@ -65,35 +64,6 @@ int pw_auth (const char *cipher,
struct skey skey;
#endif
/*
* There are programs for adding and deleting authentication data.
*/
if ((PW_ADD == reason) || (PW_DELETE == reason)) {
return 0;
}
/*
* There are even programs for changing the user name ...
*/
if ((PW_CHANGE == reason) && (NULL != input)) {
return 0;
}
/*
* WARNING:
*
* When we change a password and we are root, we don't prompt.
* This is so root can change any password without having to
* know it. This is a policy decision that might have to be
* revisited.
*/
if ((PW_CHANGE == reason) && (getuid () == 0)) {
return 0;
}
/*
* WARNING:
*
@@ -128,25 +98,22 @@ int pw_auth (const char *cipher,
#endif
/*
* Prompt for the password as required. FTPD and REXECD both
* get the cleartext password for us.
* Prompt for the password as required.
*/
if ((PW_FTP != reason) && (PW_REXEC != reason) && (NULL == input)) {
cp = getdef_str ("LOGIN_STRING");
if (NULL == cp) {
cp = _(PROMPT);
}
cp = getdef_str ("LOGIN_STRING");
if (NULL == cp) {
cp = _(PROMPT);
}
#ifdef SKEY
if (use_skey) {
printf ("[%s]\n", challenge_info);
}
if (use_skey) {
printf ("[%s]\n", challenge_info);
}
#endif
SNPRINTF(prompt, cp, user);
clear = agetpass(prompt);
input = (clear == NULL) ? "" : clear;
}
SNPRINTF(prompt, cp, user);
clear = agetpass(prompt);
input = (clear == NULL) ? "" : clear;
/*
* Convert the cleartext password into a ciphertext string.
+1 -32
View File
@@ -7,42 +7,11 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
/*
* $Id$
*/
#ifndef _PWAUTH_H
#define _PWAUTH_H
#ifndef USE_PAM
int pw_auth (const char *cipher,
const char *user,
int flag,
/*@null@*/const char *input);
int pw_auth(const char *cipher, const char *user);
#endif /* !USE_PAM */
/*
* Local access
*/
#define PW_SU 1
#define PW_LOGIN 2
/*
* Administrative functions
*/
#define PW_ADD 101
#define PW_CHANGE 102
#define PW_DELETE 103
/*
* Network access
*/
#define PW_TELNET 201
#define PW_RLOGIN 202
#define PW_FTP 203
#define PW_REXEC 204
#endif /* _PWAUTH_H */
+1 -1
View File
@@ -28,7 +28,7 @@ void passwd_check (const char *user, const char *passwd, MAYBE_UNUSED const char
if (NULL != sp) {
passwd = sp->sp_pwdp;
}
if (pw_auth (passwd, user, PW_LOGIN, NULL) != 0) {
if (pw_auth(passwd, user) != 0) {
SYSLOG ((LOG_WARN, "incorrect password for `%s'", user));
(void) sleep (1);
fprintf (log_get_logfd(), _("Incorrect password for %s.\n"), user);
+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 "string/strchr/strrspn.h"
extern inline char *strrspn(char *restrict s, const char *restrict accept);
#include "search/l/lsearch.h"
+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 ();
return -1;
}
#ifdef HAVE_INITGROUPS
/*
* For systems which support multiple concurrent groups, go get
* the group set from the /etc/group file.
@@ -60,7 +60,7 @@ int setup_groups (const struct passwd *info)
closelog ();
return -1;
}
#endif
return 0;
}
@@ -96,7 +96,7 @@ int change_uid (const struct passwd *info)
* Returns 0 on success, or -1 on failure.
*/
#if defined (HAVE_INITGROUPS) && ! (defined USE_PAM)
#if !defined(USE_PAM)
int setup_uid_gid (const struct passwd *info, bool is_console)
#else
int setup_uid_gid (const struct passwd *info)
@@ -106,7 +106,7 @@ int setup_uid_gid (const struct passwd *info)
return -1;
}
#if defined (HAVE_INITGROUPS) && ! defined (USE_PAM)
#if !defined(USE_PAM)
if (is_console) {
const char *cp = getdef_str ("CONSOLE_GROUPS");
@@ -114,7 +114,7 @@ int setup_uid_gid (const struct passwd *info)
perror ("Warning: add_groups");
}
}
#endif /* HAVE_INITGROUPS && !USE_PAM*/
#endif // !USE_PAM
if (change_uid (info) < 0) {
return -1;
+1 -1
View File
@@ -27,9 +27,9 @@
#include "getdef.h"
#include "shadowlog.h"
#include "string/sprintf/xasprintf.h"
#include "string/strchr/stpspn.h"
#include "string/strcmp/streq.h"
#include "string/strdup/xstrdup.h"
#include "string/strspn/stpspn.h"
#include "string/strtok/stpsep.h"
+10 -10
View File
@@ -36,9 +36,9 @@
/* Do the same as the other _dup function, even if we know the
* structure. */
/*@-mustfreeonly@*/
sg->sg_name = strdup (sgent->sg_name);
sg->sg_namp = strdup (sgent->sg_namp);
/*@=mustfreeonly@*/
if (NULL == sg->sg_name) {
if (NULL == sg->sg_namp) {
free (sg);
return NULL;
}
@@ -46,7 +46,7 @@
sg->sg_passwd = strdup (sgent->sg_passwd);
/*@=mustfreeonly@*/
if (NULL == sg->sg_passwd) {
free (sg->sg_name);
free (sg->sg_namp);
free (sg);
return NULL;
}
@@ -57,7 +57,7 @@
/*@=mustfreeonly@*/
if (NULL == sg->sg_adm) {
free (sg->sg_passwd);
free (sg->sg_name);
free (sg->sg_namp);
free (sg);
return NULL;
}
@@ -69,7 +69,7 @@
}
free (sg->sg_adm);
free (sg->sg_passwd);
free (sg->sg_name);
free (sg->sg_namp);
free (sg);
return NULL;
}
@@ -86,7 +86,7 @@
}
free (sg->sg_adm);
free (sg->sg_passwd);
free (sg->sg_name);
free (sg->sg_namp);
free (sg);
return NULL;
}
@@ -102,7 +102,7 @@
}
free (sg->sg_adm);
free (sg->sg_passwd);
free (sg->sg_name);
free (sg->sg_namp);
free (sg);
return NULL;
}
@@ -131,7 +131,7 @@ void
sgr_free(/*@only@*/struct sgrp *sgent)
{
size_t i;
free (sgent->sg_name);
free (sgent->sg_namp);
if (NULL != sgent->sg_passwd)
free(strzero(sgent->sg_passwd));
@@ -150,7 +150,7 @@ static const char *gshadow_getname (const void *ent)
{
const struct sgrp *gr = ent;
return gr->sg_name;
return gr->sg_namp;
}
static void *gshadow_parse (const char *line)
@@ -163,7 +163,7 @@ static int gshadow_put (const void *ent, FILE * file)
const struct sgrp *sg = ent;
if ( (NULL == sg)
|| (valid_field (sg->sg_name, ":\n") == -1)
|| (valid_field (sg->sg_namp, ":\n") == -1)
|| (valid_field (sg->sg_passwd, ":\n") == -1)) {
return -1;
}
+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
+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);
// string character count
inline size_t
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"
// string null-byte
// Similar to strlen(3), but return a pointer instead of an offset.
#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);
// strings equal
/* Return true if s1 and s2 compare equal. */
inline bool
streq(const char *s1, const char *s2)
+1
View File
@@ -13,6 +13,7 @@
#include "sizeof.h"
// string format time
#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 "string/strchr/stpspn.h"
#include "string/strspn/stpspn.h"
@@ -2,8 +2,8 @@
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_STRING_STRCHR_STPSPN_H_
#define SHADOW_INCLUDE_LIB_STRING_STRCHR_STPSPN_H_
#ifndef SHADOW_INCLUDE_LIB_STRING_STRSPN_STPSPN_H_
#define SHADOW_INCLUDE_LIB_STRING_STRSPN_STPSPN_H_
#include <config.h>
@@ -13,6 +13,7 @@
#include "attr.h"
// string returns-pointer substring prefix length
// Similar to strspn(3), but return a pointer instead of an offset.
// Similar to strchrnul(3), but search for any bytes not in 'accept'.
#define stpspn(s, accept) \
+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);
// string returns-pointer separate
// Similar to strsep(3),
// but return the next token, and don't update the input pointer.
// Similar to strtok(3),
+4 -9
View File
@@ -14,8 +14,9 @@
#include "atoi/str2i/str2s.h"
#include "getdate.h"
#include "prototypes.h"
#include "string/strchr/stpspn.h"
#include "string/ctype/strisascii/strisdigit.h"
#include "string/strcmp/streq.h"
#include "string/strspn/stpspn.h"
/*
@@ -35,7 +36,6 @@
long strtoday (const char *str)
{
time_t t;
bool isnum = true;
const char *s = str;
/*
@@ -54,14 +54,9 @@ long strtoday (const char *str)
s++;
}
s = stpspn(s, " ");
while (isnum && !streq(s, "")) {
if (!isdigit (*s)) {
isnum = false;
}
s++;
}
if (isnum) {
if (strisdigit(s)) {
long retdate;
if (str2sl(&retdate, str) == -1)
return -2;
return retdate;
+2 -11
View File
@@ -22,6 +22,7 @@
#include "alloc/realloc.h"
#include "alloc/reallocf.h"
#include "atoi/str2i/str2u.h"
#include "string/ctype/strisascii/strisdigit.h"
#include "string/sprintf/snprintf.h"
#include "string/strcmp/streq.h"
@@ -926,22 +927,12 @@ out:
return count;
}
static bool all_digits(const char *str)
{
int i;
for (i = 0; str[i] != '\0'; i++)
if (!isdigit(str[i]))
return false;
return true;
}
static int append_uids(uid_t **uids, const char *owner, int n)
{
int i;
uid_t owner_uid;
if (all_digits(owner)) {
if (strisdigit(owner)) {
i = sscanf(owner, "%d", &owner_uid);
if (i != 1) {
// should not happen
+1 -1
View File
@@ -39,7 +39,6 @@ man_MANS = \
man1/sg.1 \
man3/shadow.3 \
man5/shadow.5 \
man5/suauth.5 \
man8/useradd.8 \
man8/userdel.8 \
man8/usermod.8 \
@@ -57,6 +56,7 @@ man_nopam = \
if WITH_SU
man_MANS += man1/su.1
man_nopam += man5/suauth.5
endif
if !USE_PAM
+13 -15
View File
@@ -89,11 +89,12 @@ build_triplet = @build@
host_triplet = @host@
@ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8
@WITH_SU_TRUE@am__append_2 = man1/su.1
@USE_PAM_FALSE@am__append_3 = $(man_nopam)
@ENABLE_SUBIDS_TRUE@am__append_4 = $(man_subids)
@ENABLE_LASTLOG_TRUE@am__append_5 = lastlog.8.xml
@USE_PAM_TRUE@am__append_6 = $(man_nopam)
@ENABLE_SUBIDS_FALSE@am__append_7 = $(man_subids)
@WITH_SU_TRUE@am__append_3 = man5/suauth.5
@USE_PAM_FALSE@am__append_4 = $(man_nopam)
@ENABLE_SUBIDS_TRUE@am__append_5 = $(man_subids)
@ENABLE_LASTLOG_TRUE@am__append_6 = lastlog.8.xml
@USE_PAM_TRUE@am__append_7 = $(man_nopam)
@ENABLE_SUBIDS_FALSE@am__append_8 = $(man_subids)
subdir = man
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
@@ -418,14 +419,11 @@ man_MANS = man1/chage.1 man1/chfn.1 man8/chgpasswd.8 man8/chpasswd.8 \
man8/logoutd.8 man1/newgrp.1 man8/newusers.8 man8/nologin.8 \
man1/passwd.1 man5/passwd.5 man8/pwck.8 man8/pwconv.8 \
man8/pwunconv.8 man1/sg.1 man3/shadow.3 man5/shadow.5 \
man5/suauth.5 man8/useradd.8 man8/userdel.8 man8/usermod.8 \
man8/vigr.8 man8/vipw.8 $(am__append_1) $(am__append_2) \
$(am__append_3) $(am__append_4)
man_nopam = \
man5/limits.5 \
man5/login.access.5 \
man5/porttime.5
man8/useradd.8 man8/userdel.8 man8/usermod.8 man8/vigr.8 \
man8/vipw.8 $(am__append_1) $(am__append_2) $(am__append_4) \
$(am__append_5)
man_nopam = man5/limits.5 man5/login.access.5 man5/porttime.5 \
$(am__append_3)
man_subids = \
man1/getsubids.1 \
man1/newgidmap.1 \
@@ -443,7 +441,7 @@ man_XMANS = chage.1.xml chfn.1.xml chgpasswd.8.xml chpasswd.8.xml \
porttime.5.xml pwck.8.xml pwconv.8.xml shadow.3.xml \
shadow.5.xml sg.1.xml su.1.xml suauth.5.xml subgid.5.xml \
subuid.5.xml useradd.8.xml userdel.8.xml usermod.8.xml \
vipw.8.xml $(am__append_5)
vipw.8.xml $(am__append_6)
login_defs_v = \
BCRYPT_MIN_ROUNDS.xml \
CHFN_AUTH.xml \
@@ -518,7 +516,7 @@ login_defs_v = \
EXTRA_DIST = $(man_MANS) $(man_XMANS) config.xml $(addprefix \
login.defs.d/,$(login_defs_v)) man8/sulogin.8 sulogin.8.xml \
generate_mans.mak generate_translations.mak its.rules \
shadow-man.xsl $(am__append_6) $(am__append_7)
shadow-man.xsl $(am__append_7) $(am__append_8)
@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_FALSE@VENDORDIR_COND = without_vendordir
@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_TRUE@VENDORDIR_COND = with_vendordir
@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@PAM_COND = no_pam
+1 -2
View File
@@ -208,8 +208,7 @@
found under the directory <replaceable>PREFIX_DIR</replaceable>.
This option does not chroot and is intended for preparing a cross-compilation
target. Some limitations: NIS and LDAP users/groups are
not verified. PAM authentication is using the host files.
No SELINUX support.
not verified. No SELINUX support.
</para>
</listitem>
</varlistentry>
+1 -1
View File
@@ -1,2 +1,2 @@
<!ENTITY GROUP_NAME_MAX_LENGTH '32'>
<!ENTITY SHADOW_UTILS_VERSION '4.17.2'>
<!ENTITY SHADOW_UTILS_VERSION '4.17.3'>
+3 -3
View File
@@ -2,12 +2,12 @@
.\" Title: chfn
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 11/01/2025
.\" Date: 24/02/2025
.\" Manual: User Commands
.\" Source: shadow-utils 4.17.2
.\" Source: shadow-utils 4.17.3
.\" Language: Danish
.\"
.TH "CHFN" "1" "11/01/2025" "shadow\-utils 4\&.17\&.2" "User Commands"
.TH "CHFN" "1" "24/02/2025" "shadow\-utils 4\&.17\&.3" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
+3 -3
View File
@@ -2,12 +2,12 @@
.\" Title: newgrp
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 11/01/2025
.\" Date: 24/02/2025
.\" Manual: User Commands
.\" Source: shadow-utils 4.17.2
.\" Source: shadow-utils 4.17.3
.\" Language: Danish
.\"
.TH "NEWGRP" "1" "11/01/2025" "shadow\-utils 4\&.17\&.2" "User Commands"
.TH "NEWGRP" "1" "24/02/2025" "shadow\-utils 4\&.17\&.3" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

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