Go to file
Alejandro Colomar 220b352b70 Use strlcpy(3) instead of its pattern
-  Since strncpy(3) is not designed to write strings, but rather
   (null-padded) character sequences (a.k.a. unterminated strings), we
   had to manually append a '\0'.  strlcpy(3) creates strings, so they
   are always terminated.  This removes dependencies between lines, and
   also removes chances of accidents.

-  Repurposing strncpy(3) to create strings requires calculating the
   location of the terminating null byte, which involves a '-1'
   calculation.  This is a source of off-by-one bugs.  The new code has
   no '-1' calculations, so there's almost-zero chance of these bugs.

-  strlcpy(3) doesn't padd with null bytes.  Padding is relevant when
   writing fixed-width buffers to binary files, when interfacing certain
   APIs (I believe utmpx requires null padding at lease in some
   systems), or when sending them to other processes or through the
   network.  This is not the case, so padding is effectively ignored.

-  strlcpy(3) requires that the input string is really a string;
   otherwise it crashes (SIGSEGV).  Let's check if the input strings are
   really strings:

   -  lib/fields.c:
      -  'cp' was assigned from 'newft', and 'newft' comes from fgets(3).

   -  lib/gshadow.c:
      -  strlen(string) is calculated a few lines above.

   -  libmisc/console.c:
      -  'cons' comes from getdef_str, which is a bit cryptic, but seems
         to generate strings, I guess.1

   -  libmisc/date_to_str.c:
      -  It receives a string literal.  :)

   -  libmisc/utmp.c:
      -  'tname' comes from ttyname(3), which returns a string.

   -  src/su.c:
      -  'tmp_name' has been passed to strcmp(3) a few lines above.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
2022-12-22 18:03:39 -06:00
.builds CI: add libbsd and pkg-config dependencies 2022-11-28 09:07:41 -06:00
.github CI: add libbsd and pkg-config dependencies 2022-11-28 09:07:41 -06:00
contrib Remove pwdauth.c 2022-12-21 08:22:22 -06:00
doc Remove traces of utmpx 2022-12-22 10:31:43 +01:00
docs fix spelling and unify whitespace 2021-08-18 18:06:02 +00:00
etc fix PAM service files --without-selinux 2022-03-04 08:51:20 -06:00
lib Use strlcpy(3) instead of its pattern 2022-12-22 18:03:39 -06:00
libmisc Use strlcpy(3) instead of its pattern 2022-12-22 18:03:39 -06:00
libsubid Revert "Drop unused function subid_init()" 2022-08-21 13:20:56 -05:00
man Allow supplementary groups to be added via config file 2022-11-18 15:10:56 -06:00
po updated Dutch translation 2022-09-27 16:01:31 -05:00
src Use strlcpy(3) instead of its pattern 2022-12-22 18:03:39 -06:00
tests Add '62_usermod_remove_supplementary_groups' test case to test runner scripts (run_some) 2022-12-11 10:58:37 -06:00
.gitignore Show libsubid api version in subid.h 2021-12-05 08:02:57 -06:00
.travis.yml subids: support nsswitch 2021-04-16 21:02:37 -05:00
acinclude.m4 configure: replace obsolete autoconf macros 2022-05-10 09:55:18 +02:00
AUTHORS.md AUTHORS: improve markdown output 2022-03-18 16:10:51 -05:00
autogen.sh undo accidental autogen.sh commit: enable-shared 2021-11-27 14:56:03 -06:00
ChangeLog update changelog 2022-11-08 10:28:10 -06:00
configure.ac Assume struct tm is defined in <time.h> 2022-12-22 09:49:02 -06:00
COPYING Update licensing info 2021-12-23 19:36:50 -06:00
Makefile.am fix spelling and unify whitespace 2021-08-18 18:06:02 +00:00
NEWS fix spelling and unify whitespace 2021-08-18 18:06:02 +00:00
README Add README as symlink to README.md 2021-12-19 14:09:08 -06:00
README.md README: update content and format 2021-11-22 15:31:54 +01:00
SECURITY.md Add Christian Brauner to SECURITY.md 2021-10-25 14:26:37 -05:00
shadow.spec.in * shadow.spec.in: Fix the source (new FTP). 2008-08-31 17:30:45 +00:00
TODO fix spelling and unify whitespace 2021-08-18 18:06:02 +00:00

shadow-utils

Introduction

The shadow-utils package includes the necessary programs for converting UNIX password files to the shadow password format, plus programs for managing user and group accounts. The pwconv command converts passwords to the shadow password format. The pwunconv command unconverts shadow passwords and generates a passwd file (a standard UNIX password file). The pwck command checks the integrity of password and shadow files. The lastlog command prints out the last login times for all users. The useradd, userdel, and usermod commands are used for managing user accounts. The groupadd, groupdel, and groupmod commands are used for managing group accounts.

Sites

Contacts

There are several ways to contact us:

Mailing archives

Authors and maintainers

Authors and maintainers are listed in AUTHORS.md.