shadow (1:4.0.3-36) unstable; urgency=low

  * Debian specific programs fixes:
    - Re-enable logging and displaying failures on login when login is
      compiled with PAM and when FAILLOG_ENAB is set to yes. And create the
      faillog file if it does not exist on postinst (as on Woody).
      Closes: #192849
    - do not localize login's syslog messages.
  * Debian packaging fixes:
    - Fix FTBFS with new dpkg 1.13 and use a correct dpkg-architecture
      invocation. Closes: #314407
    - Add a comment about potential sensitive information exposure
      when LOG_UNKFAIL_ENAB is set in login.defs
      Closes: #298773
    - Remove limits.5 and limits.conf.5 man pages which do not
      reflect the way we deal with limits in Debian
      Closes: #288106, #244754
    - debian/login.defs:
      - Make SU_PATH and PATH consistent with the values used in /etc/profile
        Closes: #286616
      - Comment the UMASK setting which is more confusing than useful
        as it only affects console logins. Better use pam_umask instead
        Closes: #314539, #248150
      - Add a comment about "appropriate" values for umask
        Closes: #269583
      - Correct the assertion about the variable defined by QMAIL_DIR
        which is MAILDIR, not MAIL
        Closes: #109279
      - Move the PASS_MAX_LEN variable at the end of login.defs as this
        is obsoleted when using PAM
        Closes: #87301
    - debian/passwd.config:
      - Re-enable the password confirmation question at critical priority
        Closes: #304350
      - Do no prompt again for the login name when the two passwords don't
        match while creating a new user
        Closes: #245332
    - debian/add-shell.sh, debian/remove-shell.sh, debian/shadowconfig.sh,
      debian/passwd.config, debian/passwd.postinst:
      - checked for bashisms, replaced "#!/bin/bash" with "#!/bin/sh",
        Closes: #315767
      - replaced "test XXX -a YYY" XSI:isms with "test XXX && test YYY",
        for rationale see:
        http://www.opengroup.org/onlinepubs/009695399/utilities/test.html
      - replaced all unneeded "egrep"s with basic "grep"s
        Closes: #256732
    - debian/rules:
      Remove the setuid bit on login
      Closes: #298060
    - debian/passwd.templates:
      Templates rewrite to shorten them down a little and make them DTSG
      compliant. Give more details about what the user's full name is used
      for.
      Closes: #287410
    - Updated to Standards: 3.6.2 (checked)
  * Debconf translation updates:
    - Estonian added. Closes: #312471
    - Basque updated. Closes: #314303
    - Malagasy updated. Closes: #290842
    - Punjabi updated. Closes: #315372
    - Danish updated. Closes: #315378
    - Polish updated. Closes: #315391
    - Japanese updated. Closes: #315407
    - Brazilian Portuguese updated. Closes: #315426
    - Czech updated. Closes: #315429
    - Spanish updated. Closes: #315434
    - Lithuanian updated. Closes: #315483
    - Galician updated. Closes: #315362
    - Portuguese updated. Closes: #315375
    - Simplified Chinese updated. Closes: #315567
    - French updated
    - Ukrainian updated. Closes: #315727
    - Welsh updated. Closes: #315809
    - Slovak updated. Closes: #315812
    - Romanian updated. Closes: #315783
    - Finnish updated. Closes: #315972
    - Catalan updated. Closes: #316026
  * Man pages translation updates:
    - Remove the too outdated Korean translation of newgrp.1
      which doesn't even mention sg
      Closes: #261490
  * Man pages correction for Debian specific issues:
    - 402_usermod.8-system-users-range-286258:
      Document the system user range from 0 to 999 in Debian
      Closes: #286258
  * Upstream bugs not fixed in upstream releases or CVS:
    - 423_su_pass_args_without_concatenation
      Thanks to Helmut Waitzmann.
      Closes: #276419
      * pass the argument to the shell or command without concatenation
        before the call to exec.
      * If no command is provided, the arguments after the username are for
        the shell, no -c has to be appended.
    - 008_su_ignore_SIGINT
      * Also ignore SIGQUIT in su to avoid defeating the delay.
        The gain in security is very minor.
        Closes: #288827
    - 424_pwck.8_quiet_option
      pwck(8): document the -q option. Closes: #309408
    - 425_lastlog_8_sparse
      lastlog(8): Document that lastlog is a sparse file, and don't need to be
      rotated. Closes: #219321
    - 426_grpck_group-gshadow_members_consistency
      * (grpck) warn for inconsistencies between members in /etc/group and gshadow
        Closes: #75181
      * (pwck and grpck) warn and propose a fix for entries present in the
        regular /etc/group or /etc/passwd files and not in shadow/gshadow.
    - 427_chage_expiry_0
      Fix chage display in the case of null expiry fields (do not display
      Never, but 01 Jan 1970)
      Closes: #78961
  * Upstream bugs already fixed in upstream releases or CVS:
    - Corrected typos in chfn.1. Closes: #312428
    - Corrected typos in gshadow.5. Closes: #312429
    - Corrected typos in shadow.5. Closes: #312430
    - Corrected typos in grpck.8. Closes: #312431
    - Added patch (356th) for su to propagate SIGSTOP up and SIGCONT down.
      Added similar patch (357th) for newgrp. Both changes only affect
      operation with CLOSE_SESSION set to yes (in /etc/login.defs).
      Closes: #314727
  * Translation updates:
    - debian/patches/010_more-i18ned-messages
      - More messages are translatable. We will deal with the translation
        updates after syncing with upstream.
        Closes: #266281
    - debian/patches/114_eu:
      - Basque translation update. Closes: #314423
    - debian/patches/132_vi.dpatch:
      - Vietnamese translation update. Closes: #315840
 -- Christian Perrier <bubulle@debian.org>  Mon, 20 Jun 2005 23:37:56 +0300

shadow (1:4.0.3-35) unstable; urgency=low

  * Re-apply the debian/patches/036_CAN-2004-1001_passwd_check patch
    which fixed the "Adjusted password check to fix authentication bypass"
    security issue (CAN-2004-1001)
  * Debian packaging fixes:
    - Add --host to config_options on cross build. Patch from NIIBE Yutaka.
      Closes: #283729
    - Enable login for GNU/Hurd in rules. First patch from Robert Millan.
      Closes: #249372
    - Cleanup passwd debconf stuff as md5 passwords are assumed since
      1:4.0.3-19 and the resolution of #223664.
    - Document the TTYPERM variable set to 0600 in the default login.defs file
      Closes: #59439
    - Make login and su use limits.so PAM module by default
      (change made in sarge branch also)
      Closes: #300720
    - debian/rules: Add removal of config.log in the clean target
    - debian/control: 
      - Add Martin to Uploaders
      - Remove Sam Hartman from Uploaders. The team is now setup and this
        does not really have a real meaning now. You're still welcome for
        NMU's, Sam, and thanks for the good work.
    - Switching from dpatch to quilt.
  * Debconf translation updates:
    - Portuguese spellchecked by Miguel Figueiredo
    - Punjabi (Gumurkhi) added, by Amanpreet Singh Alam. Closes: #309800
  * Man pages translation updates:
    - German completed by reference to original man page
      Closes: #311554
  * Debian specific programs fixes:
    - NONE
  * Upstream bugs not fixed in upstream releases or CVS:
    - 421_login.1_pishing:
      Document how to initiate a trusted path under Linux
      Closes: #305600
    - set CLOSE_SESSIONS to yes in login.defs, and document why.
      Closes: #163635
  * Upstream bugs already fixed in upstream releases or CVS:
    - 324_configure.in-no-debian-dir:
      Separated from 004_configure.in : this change will not be needed when
      syncing with upstream
    - 325_gshadow_5_manpage:
      Add a gshadow.5 man page, and clarifications in the newgrp and gpasswd
      man pages.
      Closes: #113191, #166173, #169046, #251926
    - 326_su.1_pwconv.8-typos:
      Correct typos in su.1 and pwconv.8 man pages.
      Closes: #309666
  * Translation updates:
    - 004_configure.in, 100_LINGUAS
      Add Vietnamese to LINGUAS. Patch for LINGUAS in configure.in moved
      from 004_configure.in to the new 100_LINGUAS patch
    - 101_cs: Czech updated by Miroslav Kure
      Closes: #308658
    - 102_de: German updated by Dennis Stampfer
    - 104_fr: French updated by Jean-Luc Coulon
      Closes: #308909
    - 111_ca: Catalan completed by Guillem Jover
      Closes: #309212
    - 108_sv: Swedish completed with the help of Magnus Holmgren
              Encoding issues fixed
              Closes: #309380
    - 109_uk: Ukrainian completed by Eugeniy Meshcheryakov
      Closes: #308647
    - 120_nl: Dutch updated by Bart Cornelis
      Closes: #308662
    - 124_ru: Russian updated by Yuri Kozlov
      Closes: #308839
    - 129_ru: Romanian updated by Sorin Bataruc
      Closes: #308921
    - 130_zh_TW: Tradition Chinese updated by Tetralet
      Closes: #311588
    - 131_tl: Tagalog updated by Eric Pareja
      Closes: #310386
    - 132_vi: Correct file used for Vietnamese tanslation
      Closes: #306614, #307251, #307262, #308479

 -- Christian Perrier <bubulle@debian.org>  Fri,  3 Jun 2005 07:32:07 +0200

shadow (1:4.0.3-34) unstable; urgency=low

  * Debian packaging fixes:
    - NONE
  * Debian specific programs fixes:
    - NONE
  * Upstream bugs not fixed in upstream releases or CVS:
    - 406_good_name:
      - relaxed user/group names checking is now fixed and accepts
        _only_ names matching '^[^-:\n][^:\n]*$'
        Closes: #264879, #308478
  * Upstream bugs already fixed in upstream releases or CVS:
    - 311_high-uids.dpatch:
      - Add large file support to lastlog and faillog. Closes: #280212
  * Translation updates:
    - 132_vi:
      Vietnamese programs translation added (from upstream CVS)
      Closes: #308479
    - 118_it:
      Italian programs translation updated
      Closes: #308327

 -- Christian Perrier <bubulle@debian.org>  Tue, 10 May 2005 18:24:12 +0200

shadow (1:4.0.3-33) unstable; urgency=low

  * The "Don't believe lintian blindly" release
  * Urgency left to low because RC bug fixed but we leave priority
    to sarge-targeted work
  * Debian packaging fixes:
    - Remove CVS id tag from the supplied login.defs file
      Closes: #308019
    - revert dependency on debconf which would make it required
      Closes: #308145
    - Add the missing add-shell, remove-shell, cppw and cpgr
      (Debian specific) man pages
      Closes: #162241
    - make lintian ignore warnings about missing debconf dependency
      in passwd.lintian-overrides
  * Debian specific programs fixes:
    - NONE
  * Upstream bugs not already fixed in upstream releases or CVS:
    - NONE
  * Upstream bugs already fixed in upstream releases or CVS:
    - 313_pam_access_with_preauth:
      - allow PAM account authorization when preauthenticated
        Closes: #193869
    - 314_passwd.1_formatting:
      - minor formatting fixes of passwd(1) man page
        Closes: #304447
    - 315_chage.1_document_expiration_removal:
      - document expiration removal in chage(1)
        Closes: #304542
    - 316_vipw-race-242407:
      - make vipw to remove /etc/{passwd|shadow|group|gshadow}.edit
        and only then unlock
        Closes: #242407
    - 317_lastlog_usage_249611:
      - Fix the lastlog usage and all the translations accordingly
        (--user instead of --login).
        Closes: #249611
    - 323_passwd.1-typo:
      - correct a typo in passwd(1) man page. Closes: #302740

 -- Christian Perrier <bubulle@debian.org>  Sun,  8 May 2005 14:32:20 +0200

shadow (1:4.0.3-32) unstable; urgency=low

  * Switch to dpatch for upstream patches
    This should bring more clarity to modifications
    we make to upstream sources and help integrating
    new upstream releases
    Old patches have been moved quite roughly to
    debian/patches
  * Modified debian/rules for "Calling GNU configure properly", see
    /usr/share/doc/autotools-dev/README.Debian.gz
  * Debian packaging fixes:
    - Lintian fixes:
      - Description synopsis initial capital letters removed
      - passwd now depends on debconf (>=0.5.00) as it uses the seen flag
      - add login.lintian-overrides and passwd.lintian-overrides
        files to mention setuid and setgid files and avoid lintian warning
        about them
    - debian/pam.d/login:
      - Remove the confusing comment about "nullok". Closes: #207816
    - debian/rules:
      - Add call for dh_installdirs
    - debian/passwd.dirs:
      - Added
    - debian/login.dirs:
      - Added
  * Debian specific programs fixes:
    - fixed /usr/sbin/remove-shell bug with handling of non-existing/empty
      /etc/shells file. Closes: #271565
  * GNU config automated update: config.sub (20010907 to 20050422),
    config.guess (20010904 to 20050422)

 -- Christian Perrier <bubulle@debian.org>  Tue,  3 May 2005 11:53:12 +0200

shadow (1:4.0.3-31sarge3) unstable; urgency=low

  * The "please buy me a brain" release
  * *Really* shorten down the Dutch debconf translation for the root password
    input so that it fits in one screen. Closes: #277750
  * man/usermod.8: *Really* document -o option in usermod
	           Closes: #302388
  * man/fr/po4a/fr: Removed. This directory only clutters up the diff
	            and is not used during the build process
  * man/de/passwd.1: Updated. Closes: #304757
  * man/de/chsh.1: Updated.
  * man/it/*: All files updated. Closes: #305095
  * Translation updates:
    - Portuguese (from the translation file sent for 4.0.8 upstream)
      Closes: #305257

 -- Christian Perrier <bubulle@debian.org>  Tue, 19 Apr 2005 19:31:43 +0200

shadow (1:4.0.3-31sarge2) unstable; urgency=low

  * Shorten down the Dutch debconf translation for the root password
    input so that it fits in one screen. Closes: #277750
  * man/usermod.8: Document -o option in usermod
                   Closes: #302388

 -- Christian Perrier <bubulle@debian.org>  Mon,  4 Apr 2005 20:28:47 +0200

shadow (1:4.0.3-31sarge1) unstable; urgency=high

  * Urgency set to high because of RC bug fixed. Reuploaded
    because I messed up with the changelog first. Use this occasion
    to start a sarge series just in case. Changes below were made
    in the former version already.
  * Avoid package file conflicts for woody->sarge upgrade:
    - Add manpages-it and manpages-ko to Replaces: for login
    - Remove manpages-de from Replaces: for login (useless)
    - Improve readability of the Replaces line for passwd
    Closes: #299549

 -- Christian Perrier <bubulle@debian.org>  Tue, 15 Mar 2005 13:55:34 +0100

shadow (1:4.0.3-31) unstable; urgency=low

  * New maintainer

 -- Christian Perrier <bubulle@debian.org>  Fri, 11 Mar 2005 19:28:38 +0100

shadow (1:4.0.3-30.10) unstable; urgency=low

  * Non-maintainer upload targeted at sarge.
  * Programs translations:
    - Greek updated. Closes: #293911
    - French updated. Closes: #294330
  * Debconf translations:
    - Galician updated. Closes: #295543

 -- Christian Perrier <bubulle@debian.org>  Mon,  7 Feb 2005 08:18:56 +0100

shadow (1:4.0.3-30.9) unstable; urgency=low

  * Non-maintainer upload targeted at sarge.
  * Programs translations:
    - German updated. Closes: #291703
    - Tagalog added. Closes: #292353
    - Korean updated.

 -- Christian Perrier <bubulle@debian.org>  Sun, 23 Jan 2005 09:30:49 +0100

shadow (1:4.0.3-30.8) unstable; urgency=low

  * Non-maintainer upload targeted at sarge.
  * Debconf translations:
    - Tagalog added. Closes: #289837
  * Programs translations:
    - Traditional Chinese added. Closes: #288879

 -- Christian Perrier <bubulle@debian.org>  Tue, 11 Jan 2005 11:39:18 +0100

shadow (1:4.0.3-30.7) unstable; urgency=low

  * Non-maintainer upload targeted at sarge.
  * Resolv conflict with manpage-spl in login
    as well as passwd. Thanks to Robert Luberda for
    the notice

 -- Christian Perrier <bubulle@debian.org>  Thu, 23 Dec 2004 22:23:11 +0100

shadow (1:4.0.3-30.6) unstable; urgency=low

  * Revert back to Ian Gulliver genuine patch
    to chpasswd. Update man page accordingly.
    Closes: #283961 
    (again)
  * Programs translations
    - German updated. Closes: #286522
  * Debconf translations
    - German updated. Closes: #286522

 -- Christian Perrier <bubulle@debian.org>  Mon, 20 Dec 2004 23:51:39 +0100

shadow (1:4.0.3-30.5) unstable; urgency=high

  * Non-maintainer upload targeted at sarge.
    Fix release critical bug
  * Resolve conflict with woody's manpages-pl package
    which prevent woody->sarge upgrade if
    manpages-pl was installed
    Closes: #284239
  * Programs translations
    - Romanian added. Closes: #284338
  * Add MD5 support to chpasswd
    Thanks to Ian Gulliver for the patch
    Closes: #283961
  * Correct typos in man pages
    Thanks to Nicolas François for the patch
    Closes: #141322
  * Replace "C/" with "../../" in man/fr/shadow.conf
    for best integration in the package build process

 -- Christian Perrier <bubulle@debian.org>  Thu, 16 Dec 2004 21:48:56 +0100

shadow (1:4.0.3-30.4) unstable; urgency=low

  * Non-maintainer upload targeted at sarge.
    Localisation and d-i related updates only
  * Programs translations
    - Albanian (very partial) added.
  * Debconf translations
    - Hindi added. Closes: #282443
    - Malagasy added. Closes: #282580
    - Albanian added. Closes: #282160

 -- Christian Perrier <bubulle@debian.org>  Thu, 25 Nov 2004 07:21:53 +0100

shadow (1:4.0.3-30.3) unstable; urgency=high

  * Non-maintainer upload: security fix using the woody patch
    by the Security Team
  * Adjusted password check to fix authentication bypass
    [debian/patches/036_CAN-2004-1001_passwd_check]
  * Debconf translations
    - Brazilian Portuguese updated. Closes: #278051
    - Norwegian Bokmal fixed. Closes: #277563
  * Programs translations
    - Indonesian updated. Closes: #277751, #277741

 -- Christian Perrier <bubulle@debian.org>  Tue,  2 Nov 2004 22:28:26 +0100

shadow (1:4.0.3-30.2) unstable; urgency=low

  * Non-maintainer upload targeted at sarge.
    Localisation and d-i related updates only
  * Debconf translations
    - Macedonian added. Closes: #275781
    - Slovakian updated. Closes: #273585
    - Slovenian added.
  * Man pages translations
    - German for vipw.8/vigr.8. Closes: #260645
  * Fix preseeding for d-i : do not mark debconf templates as seen
    Also remove the hack for Joey Hess login name..:)
    Closes: #271407
  * Ask for the user full name at critical priority so that
    it is never empty. Closes: #257700

 -- Christian Perrier <bubulle@debian.org>  Sun, 10 Oct 2004 19:02:50 +0200

shadow (1:4.0.3-30.1) unstable; urgency=low

  * Non-maintainer upload targeted at sarge. Localisation updates only
  * Debconf translations
    - Arabic added. Closes: #261022
    - Swedish updated. Closes: #261553
    - Bulgarian added. Closes: #262928
    - Brazilian Portuguese updated. Closes: #263957
    - Simplified Chinese updated. Closes: #268646
    - Traditional Chinese updated. Closes: #268151
    - German updated. Closes: #268051
    - Basque synced with templates.pot
  * Programs translations
    - Swedish updated. Closes: #261553
    - Russian updated. Closes: #268412
    - Norwegian Bokmal updated. Closes: #269907
    - Norwegian Nynorsk updated. Closes: #269907
    - Hebrew updated. Closes: #269967
    - Danish updated. Closes: #270083
    - Catalan updated. Closes: #254956
  * Man pages translations
    - French translation completely rewritten and reviewed
      Closes: #270168
    - Add expiry.1 and limits.conf.5 to the list of installed man
      pages (add two lines to passwd.files and one to rules)
      From #270168 also.

 -- Christian Perrier <bubulle@debian.org>  Tue,  7 Sep 2004 20:20:21 +0200

shadow (1:4.0.3-30) unstable; urgency=high
  * Attempt to fix FTBFS and dependency problems on hurd. Closes: #235641
  * don't run dh_undocumented anymore as it has become angstful.

  * Thanks to Christian Perrier:
  * Debconf translations
    - Brazilian updated. Closes: #261387
    - Croatian added. Closes: #261418
    - Minor corrections fo ja.po and pl.po headers
  * Programs translations
    - Dutch updated. Closes: #260361
    - Hebrew added. Closes: #260722
  * Urgency set to high because of RC bug fixed:
  * Correct check for root password being already set in passwd.config
    Closes: #260799

  * Acknowledge 29.1 NMU: 
    Closes: #256664, #257949, #258241, #258563, #258566, #258957,
    #190567, #259389, #260223, #257949, #259663, #259827

 -- Karl Ramm <kcr@debian.org>  Tue, 27 Jul 2004 09:38:32 -0400

shadow (1:4.0.3-29.1) unstable; urgency=low

  * NMU with maintainer consent
  * Programs translations
    - Greek updated. Closes: #256664
    - Finnish updated. Closes: #257949
    - Spanish updated. Closes: #258241
    - Polish updated. Closes: #258563
    - Indonesian added (configure.in changed accordingly). Closes: #258566
    - French updated. Closes: #258957, #190567
    - Slovak updated. Closes: #259389
    - Portuguese updated. Closes: #260223
  * Debconf translations
    - Finnish updated. Closes: #257949
  * Typo correction in su.1 man page. Closes: #259663
  * Removed malloc definition in libmisc/xmalloc.c
    Closes: #259827
  * Lintian-driven corrections
    - Corrected section number in several man pages:
      - grpck.8
      - pwck.8
      - ja/grpck.8
      - pl/grpck.8
      - pl/pwck.8
    - Replace the full GPL text in copyright by a pointer
    - Bumped Standards to 3.6.1.1 (changes checked)

 -- Christian Perrier <bubulle@debian.org>  Mon, 19 Jul 2004 17:52:24 +0200

shadow (1:4.0.3-29) unstable; urgency=low
  * Be up front on the origin of our su.  Closes: #244297
  * The following thanks to Christian Perrier:
  * Debconf translations
    - Hungarian added. Closes: #256493
    - Greek updated. Closes: #251990
    - Brazilian portuguese updated. Closes: #256771
  * po/POTFILES.in
    - corrected file. No more mentions unexisting files
      Closes: #253792
      this change was already in 28.5 but was forgotten in the
      changelog
  * Acknowledge NMUs: 
  closes: #244604, #244734, #246302, #246376, #246848, #246859,
          #247084, #247698, #247770, #248386, #248391, #248392,
	  #248392, #248516, #248516, #248648, #248938, #248957,
	  #249141, #249257, #249682, #250169, #250339, #250496,
	  #251140, #251141, #251317, #251495, #251716, #251990,
	  #252087, #252499, #253165, #253186, #253570, #254503,
	  #254760 

 -- Karl Ramm <kcr@debian.org>  Sat,  3 Jul 2004 00:24:55 -0400

shadow (1:4.0.3-28.5) unstable; urgency=low

  * debian/*.files
    - care about adding ALL existing translations. Removed hard-coded
      file names. Closes: #248516
      Thanks to Ruben Porras for noticing
      This involves changes to debian/*.files with the use of
      regexp in these files
  * libmisc/failure.c
    - Make use of plural forms. Closes: #251317
  * Programs translations
    - Norwegian Bokmal and Norwegian Nynorsk translations. Closes: #252499
    - Dutch updated. Closes: #253165
    - Brazilian Portuguese updated
    - Turkish updated
    - Korean updated
    - Czech updated
    - Japanese updated
    - German updated
    - Catalan added. Closes: #254760
    - Italian updated
  * Debconf translations
    - Finnish added. Closes: #253570
    - Danish updated
    - Hebrew added. Closes: #253186
    - Traditional Chinese added. Closes: #254503
    - French updated for clarification and shorten the root password screen

 -- Christian Perrier <bubulle@debian.org>  Tue, 22 Jun 2004 09:44:45 +0200

shadow (1:4.0.3-28.4) unstable; urgency=low

  * NMU for l10n stuff again
  * Programs translations
    - All languages "activated" in configure.in. Closes: #248516
    - Russian. Closes: #250496
    - Bosnian added. Closes: #251141
    - Finnish update. Closes: #251495
    - Italian update. Closes: #252087
  * Debconf translations
    - Norwegian Bokmal update. Closes: #250339
    - Bosnian added. Closes: #251140
    - Catalan updated. Closes: #251716
    - Greek update. Closes: #251990
    - Welsh added (directly sent by Dafydd Harries
  * Christian Perrier
    - debian/passwd.config : a few rewards to a few people. Just check
      the code

 -- Christian Perrier <bubulle@debian.org>  Tue,  1 Jun 2004 09:11:01 -0300

shadow (1:4.0.3-28.3) unstable; urgency=high

  * NMU for correcting my mistake
  * Remove an extra "fi" in passwd.config. Closes: #250169
  * Debconf translation updates:
    - Norwegian Nynorsk. Closes: #249682

 -- Christian Perrier <bubulle@debian.org>  Fri, 21 May 2004 06:50:13 +0200

shadow (1:4.0.3-28.2) unstable; urgency=high

  * NMU for Debian Installer rc1 release schedule
  * Removed duplicate sentence in templates. Closes: #244734, #244604
  * Move the "root password empty" check before the root password
    confirmation. Closes: #247770
  * Debconf translation updates:
    - Danish. Closes: #246859
    - Spanish. Closes: #246302
    - Russian. Closes: #248392
    - Simplified Chinese. Closes: #248938
    - Lithuanian. Closes: #249141
    - Italian. Closes: #249257
    - Dutch sent directly by Bart Cornelis
    - Korean sent directly by Changwoo Ryu
    - Galician sent directly by Héctor Fernández
    - Romanian sent directly by Eddy Petrisor
  * Programs translation updates:
    - Korean. Closes: #242055
    - Japanese. Closes: #242586
    - Polish. Closes: #246376
    - Slovak. Closes: #247084
    - Basque. Closes: #248386
    - German. Closes: #248391
    - Russian. Closes: #248392
    - Spanish. Closes: #248516
    - Czech. Closes: #248648
    - Simplified Chinese. Closes: #248957
    - Indonesian. Closes: #242813
    - Italian sent directly by Giuseppe Sacco
  * Translated man pages
    - Typo correction in Brazilian Portuguese for gpasswd. Closes: #247698

 -- Christian Perrier <bubulle@debian.org>  Tue, 18 May 2004 12:09:34 +0200

shadow (1:4.0.3-28.1) unstable; urgency=high

  * NMU for special purposes below
  * Urgency set to high for helping out Brazilian DD's building CD's
    for FISL conference
  * Translation updates:
    - Debconf:
      - Brazilian Portuguese. Closes: #246848
      - Spanish. Was unfortunately based on older templates hence
        this does not close 246302
      - Basque: Closes: #243545
      - German: Closes: #242116

 -- Christian Perrier <bubulle@debian.org>  Mon, 10 May 2004 23:23:25 +0200

shadow (1:4.0.3-28) unstable; urgency=low

  *  Fix login and passwd in preinst to avoid promts on woody upgrade,
    Closes: #243099
  * Fix login and passwd configuration file to support common-passwd
  * Apply NMU patch from Christian Perrier, Closes: #241438

 -- Sam Hartman <hartmans@debian.org>  Thu, 29 Apr 2004 16:31:25 -0400

shadow (1:4.0.3-27) unstable; urgency=low

  * update "da" debconf translation, closes: #241262
  * new "pt_BR" program translation, closes: #241366

 -- Karl Ramm <kcr@debian.org>  Thu,  1 Apr 2004 00:19:44 -0500

shadow (1:4.0.3-26.1) unstable; urgency=low

  * NMU for Debian Installe rneeds
  * Translation updates:
    - Debconf:
      - French. Closes: #241438
      - Ukrainian. Closes: #241514
      - Swedish: #241558
      - Japanese. Closes: #241802
      - Danish. Closes: #241262
      - Portuguese. Closes: #241675
      - Polish. Closes: #243185, #242996
      - Czech. Closes: #241877
      - Korean. Closes: #241928
      - Greek. Closes: #242396
      - Turkish. Closes: #243103
      - Slovak. Closes: #245671

 -- Christian Perrier <bubulle@debian.org>  Wed, 28 Apr 2004 11:47:34 +0200

shadow (1:4.0.3-26) unstable; urgency=low

  * Have passwd.config fall back gracefully to useradd if adduser is
    unavailable. closes: #240894

 -- Karl Ramm <kcr@debian.org>  Wed, 31 Mar 2004 00:26:17 -0500

shadow (1:4.0.3-25) unstable; urgency=low

  * Update "da" program translation, thanks to Claus Hindsgaul.
  * Update "sv" translation, closes: #239198
  * lower debconf priority of shadow password question to 'low'

 -- Karl Ramm <kcr@debian.org>  Tue, 30 Mar 2004 19:39:59 -0500

shadow (1:4.0.3-24) unstable; urgency=low

  * add new program translations to the file manifest. *sigh*
    closes: #241016
  * add "tr" debconf translation. closes: #239148
  * Rearrange username creation dialog text to make sense in
    new order. closes: #240607
  * Edit the debconf templates for content.
  * Remove the program .gmo files in the clean step. closes: #200054

 -- Karl Ramm <kcr@debian.org>  Tue, 30 Mar 2004 11:37:22 -0500

shadow (1:4.0.3-23) unstable; urgency=low

  * increase maximum group name size to 32 for no particularly good reason
    closes: #240456
  * fix su man page to reflect code.  closes: #239805
  * fix username defaulting in passwd.config. closes: #238781
  * update "it" debconf translation. closes: #237504
  * update "ru" debconf translation. closes: #238211
  * update "de" debconf translation. closes: #238779
  * update "el" debconf translation. closes: #240473
  * add "nn" debconf translation. closes: #238590
  * add "da" program translation. closes: #238005
  * add "nl" program translation. closes: #238488
  * add "pt" program translation. closes: #238796
  * add "pt" debconf translation. closes: #239641
  * remove spurious const, closes: #240677

 -- Karl Ramm <kcr@debian.org>  Sun, 28 Mar 2004 19:46:34 -0500

shadow (1:4.0.3-22) unstable; urgency=low

  * Don't assume that lastlog.ll_time or utmp.ut_time or utmpx.ut_tv are made 
    up of time_ts and timevals, because they aren't on x86-64.  Dismaying
    but true.

 -- Karl Ramm <kcr@debian.org>  Sun, 14 Mar 2004 16:53:21 -0500

shadow (1:4.0.3-21) unstable; urgency=low

  * Try and get the right French translation update in the right place, 
    Karl, you can do it even if you do only speak English. Closes: #236993

 -- Karl Ramm <kcr@debian.org>  Wed, 10 Mar 2004 15:31:35 -0500

shadow (1:4.0.3-20) unstable; urgency=low

  * Added Norwegian Bokmal debconf translation, closes: #206349
  * tell shadow build system about new message translations

 -- Karl Ramm <kcr@debian.org>  Thu,  4 Mar 2004 11:04:44 -0500

shadow (1:4.0.3-19) unstable; urgency=low

  * When creating a user account in psaswd.config, ask for full name
    first, and make up a default username.  Closes: #235386
  * "No really, assume md5 passwords". Closes: #223664

 -- Karl Ramm <kcr@debian.org>  Thu,  4 Mar 2004 00:42:08 -0500

shadow (1:4.0.3-18) unstable; urgency=low

  * Removed po/cs.po and added new debian/po/cs.po
    Updated Czech translation, closes: #229125
  * Updated Japanese debconf translation, closes: #227237
  * Updated Danish debconf translation, closes: #227619
  * Updated Dutch debconf translation, closes: #227883
  * Updated Brazilian Portuguese debconf translation, closes: #228080
  * Added Simplified Chinese debconf translation
    Added Simplified Chinese programs translation
    Closes: #229334
  * Added Greek debconf translation
    Added Greek programs translation
    Closes: #229504, #229528
  * Added Finnish programs translation, closes: #230369
    charset changed from UTF-8 to ISO-8859-1 as the bug patch was wrong
  * Updated German debconf translation, closes: #232710
  * Updated Russian debconf translation, closes: #235541
  * Added Ukrainian debconf translation, closes: #233560
  * Added Lithuanian debconf translation, closes: #235698
  * thanks to Christian Perrier <bubulle@debian.org>

 -- Karl Ramm <kcr@debian.org>  Wed,  3 Mar 2004 22:56:31 -0500

shadow (1:4.0.3-17) unstable; urgency=low

  * Fix braino in version number of example dependency in README.shells.
    Apologies to anyone foolhardy enough to believe my documentation.
  * Add Swedish debconf translation, closes: #225059
  * New French debconf translation, closes: #225914
  * Add Catalan debconf translation, closes: #227029
  * add securetty files for the hurd, freebsd, and netbsd, closes: #200739

 -- Karl Ramm <kcr@debian.org>  Sun, 11 Jan 2004 17:37:54 -0500

shadow (1:4.0.3-16) unstable; urgency=low

  * run dh_installdeb *after* dh_installdebconf,
    remove . from short description of passwd, 
    add versioned conflict with debconf older than 0.5
    closes: #224133
  * replace manpages-it due to man page conflict
    closes: #224474
  * fix the *other* su syslogs.
    closes: #224508
  * fix filename in control file, closes: #224579
  * fix permissions on chage and expiry, closes: #224717
  * run debconf-updatepo
  * remove debian/compat as redundant
  
 -- Karl Ramm <kcr@debian.org>  Mon, 22 Dec 2003 19:53:30 -0500

shadow (1:4.0.3-15) unstable; urgency=low

  * remove bogus dependency on base-config 2.00,
  closes: #222772, #223726
  * New Czech translation thanks to Miroslav Kure.

 -- Karl Ramm <kcr@debian.org>  Fri, 12 Dec 2003 18:40:25 -0500

shadow (1:4.0.3-14) unstable; urgency=low

  * exit 30 when backing all the way out in passwd.conf, and 
    depend on base-config 2.00, closes: #222772
  * adjust debconf templates for debian-installer work,
    closes: #222832

 -- Karl Ramm <kcr@debian.org>  Thu, 11 Dec 2003 01:53:37 -0500

shadow (1:4.0.3-13) unstable; urgency=low

  * Fix typo passwd.config.  Closes: #223079, #222714
  * Let's try out this oldfangled anonymous ftp upload queue.

 -- Karl Ramm <kcr@debian.org>  Mon,  8 Dec 2003 17:59:31 -0500

shadow (1:4.0.3-12) unstable; urgency=low

  * Explicitly use automake-1.7 and aclocal-1.7.  closes: #216594
  * Update Danish debconf translation.  closes: #216542  
  * Update French debconf translation.  closes: #206352
  * Update Dutch debconf translation.  closes: #212995
  * Remove redundant dependency on grep.  closes: #216535
  * Fix chfn documentation bug.  closes: #213931  
  * Fix su syslogs to be less ambiguous.  (old:new instead of old-new
    because '-' can appear in usernames.)  Not clearer, mind you, but less
    ambiguous.  closes: #213592
  * Rename limits(5) to limits.conf(5) and edit to reflect reality.
    closes: #212935
  * Move the change_uid call in login back to where it was before -11, and
    relocate the fork for pam_close_session above it.  closes: #211884

 -- Karl Ramm <kcr@debian.org>  Sat, 25 Oct 2003 15:26:20 -0400

shadow (1:4.0.3-11) unstable; urgency=low

  * update Japanese debconf translation. closes: #210382
  * update Brazilian Portugese debconf translation. closes: #208122
  * run pam cleanup code as root. closes: #195048

 -- Karl Ramm <kcr@debian.org>  Sat, 13 Sep 2003 17:49:29 -0400

shadow (1:4.0.3-10) unstable; urgency=low

  * postinst sources confmodule. closes: #88843
  * Implement the pam configuration New World Order.  Wow, that was quick. :-)
  * Implement a scheme for allowing other packages to modify /etc/shells.

 -- Karl Ramm <kcr@debian.org>  Fri, 22 Aug 2003 20:58:42 -0400

shadow (1:4.0.3-9) unstable; urgency=low

  * fix mysterious creeping bug in po/Makefile.in.in, closes: #200052
  * dutch debconf translation, closes: #204578
  * switch to po-debconf, closes: #183998, #200130
  * use automake1.7, closes: #205991
  * update german debconf translation, closes: #94138
  * I can't come up with a good justification as to why characters other
    than ':'s and '\0's should be disallowed in group and usernames (other
    than '-' as the leading character).  Thus, the maintenance tools don't
    anymore.  closes: #79682, #166798, #171179
  * Fix typo in /etc/pam.d/su. closes: #196804
  * danish debconf translation, closes: #118245
  * russian debconf translation, closes: #198729
  * And last, but not least, what's undoubtedly going to be the most
    popular change: md5 passwords are turned on by default, and there is
    no prompt to change them.  Yes, this is reduced functionality.  No, it
    can't go back in the way it was; the old code not only modified
    conffiles, it modified *other*packages* conffiles and was a massive
    policy violation.  I expect this change will motivate the people who
    have said that they will come up with a proper solution to do so.
    closes: #186016, #110228, #171808

 -- Karl Ramm <kcr@debian.org>  Wed, 20 Aug 2003 02:06:50 -0400

shadow (1:4.0.3-8) unstable; urgency=low

  * Fix missing ':' in getopt call.  closes: #184301
  * Don't install mkpasswd, we don't use it.  closes: #185919, #187906
  * replaces: manpages-ko. closes: #184810
  * Fix the message in #190567 (not closing until it's been accepted upstream)
  * Fix brainos in login.1. closes: #184731
  * Fixup permissions for chage.  closes: #184138
  * Force the umask to 022 in passwd.config.  closes: #182506
  * Add Sam Hartman <hartmans@debian.org> as an uploader.
  * Update standards-version.
  * Add versioned build-depend on debhelper.

 -- Karl Ramm <kcr@debian.org>  Sat, 26 Apr 2003 15:34:16 -0400

shadow (1:4.0.3-7) unstable; urgency=low

  * When relocating a user's home directory, don't fail and remove the new
    home directory if we can't remove the old home directory for some
    reason; the results can be spectularly poort if, for instance, only
    the rmdir() fails. closes: #166369
  * run dh_installdebconf so base-config will work.  *sigh*.  closes: #166788

 -- Karl Ramm <kcr@debian.org>  Sun, 24 Nov 2002 21:40:30 -0500

shadow (1:4.0.3-6) unstable; urgency=low

  * remove automake dependency and leave only automake1.5, since it seems
    to confuse the alpha and mipsel autobuilders for some reason.

 -- Karl Ramm <kcr@debian.org>  Sun, 13 Oct 2002 21:45:15 -0400

shadow (1:4.0.3-5) unstable; urgency=low

  * build-depend on libtool and automake.  oops. closes: #164545

 -- Karl Ramm <kcr@debian.org>  Sun, 13 Oct 2002 01:44:47 -0400

shadow (1:4.0.3-4) unstable; urgency=low

  * I am unable to begin to express the bitterness that I'm now experiencing.
  * replaces manpages-de <= 0.4-4, closes: #162097, #162173
  * replaces manpages-fr, closes: #162150
  * replaces manpages-hu, closes: #162126
  * replaces manpages-ja, closes: #163511, #162095
  * fix sg symlink, closes: #162339, #163652
  * newgrp should be aware that getlogin() and ttyname() are not
    guaranteed to return anything and NOT blindly assume that they
    successfully returned a pointer to a string.  I mean, really, people,
    that sort of thing hasn't been reliable since 4.2BSD on a VAX.  I'll
    bet most of the working on the upstream weren't even born yet when
    this sort of thing was commonplace (it was NEVER acceptable).
    closes: #162303
  * pull the manpage for the spiffy su forward. closes: #162275
  * depend on automake1.5, and rerun the autogrunge.  This should
    *hopefully* make it build more consistently.
  * this concludes the biweekly treading of water.

 -- Karl Ramm <kcr@debian.org>  Sat, 12 Oct 2002 14:56:16 -0400

shadow (1:4.0.3-3) unstable; urgency=low

  * the "fix the brain damage" release
  * fix pam brain-damage in ch{age,passwd}, {group,user}{add,del,mod}, newusers
    closes: #162181, #162199, #162228 
  * fix vipw symlink brain-damage: closes: #162218
  * fix package description brain damage, closes: #139563
  * install cp{pw,gr} brain damge

 -- Karl Ramm <kcr@debian.org>  Wed, 25 Sep 2002 01:21:35 -0400

shadow (1:4.0.3-2) unstable; urgency=low

  * fix "su -".  closes: #162089
  * document exit codes of groupdel and userdel (again, for userdel)
    closes: #161861
  * clean up logoutd cleanup

 -- Karl Ramm <kcr@debian.org>  Mon, 23 Sep 2002 19:44:40 -0400

shadow (1:4.0.3-1) unstable; urgency=low

  * new upstream version! closes: #149444, #150237, #145415
  * completely new packaging!
  * all new bugs!
  * old bugs as well!
  * remove /etc/init.d/logoutd, like the old postrm should've, closes: #160682
  * fix passwd manpage, closes: #160477, #122797
  * fix lastlog manpage, closes: #159886
  * add as many virtual console devices as I seem to have to securetty,
    closes: #156472
  * add ttyS0 and tts/0 to securetty.  closes: #130138
  * su should not segfault if nobody has uid 0.  closes: #139967
  * install and use translations.  closes: #118238
  * upstream uses new automake.  closes: #114935
  * add russian template file for password.  closes: #130358
  * handle template installation correctly.  closes: #156674
  * don't place a maximum restriction on the length of passwords.
    closes: #159487
  * fix description. closes: #145459
  * update config.{guess,sub}

 -- Karl Ramm <kcr@debian.org>  Wed, 18 Sep 2002 10:14:08 -0400

shadow (20000902-12) unstable; urgency=high

  * "oops"
  * /etc/login.defs: /var/spool/mail -> /var/mail, closes: #125311

 -- Karl Ramm <kcr@debian.org>  Sun,  7 Apr 2002 11:54:48 -0400

shadow (20000902-11) unstable; urgency=low

  * Fix some nits:
  * remove changelog~ file.  oops.  closes: #139711
  * fix typo in control.  closes: #139564
  * Hmmm.  People open more bugs when I upload new versions of things.
    Maybe they just notice them more then, or maybe it's just Murphy.

 -- K. Ramm <kcr@debian.org>  Tue, 26 Mar 2002 12:14:33 -0500

shadow (20000902-10) unstable; urgency=low

  * We hates the automake.  We hates it forever.  closes: #139293
  * stupid omission: logoutd still in postinst.  closes: #139422
  * make login.defs a bit clearer. closes: #138809

 -- Karl Ramm <kcr@debian.org>  Fri, 22 Mar 2002 12:09:07 -0500

shadow (20000902-9) unstable; urgency=medium

  * Get rid of logoutd, it doesn't work, didn't work in potato, and now
    it's causing people to open RC bugs.  closes: #138259, #66153,  #121940
    I'm told the timeoutd package does a better job anyway.
  * add /bin/tcsh to /etc/shells, closes: #118103, #122112
  * add /bin/ksh to /etc/shells, closes: #123556
  * remove text about password aging from passwd(5), closes: #137493
  * spanish debconf template for passwd, closes: #136463
  * document the fact that you can not have a valid password in
    /etc/shadow.  closes: #131690
  * /etc/login.defs: /var/spool/mail -> /var/mail, closes: #125311
  * fix locations of utmp and wtmp in login(1), closes: #119656
  * The package description for passwd refers to README.Debian.gz
    but only README.debian.gz actually exists.  Most packages use
    README.Debian.gz, but the control file is the only place that gets it
    wrong for this package.  When in doubt, fix the documentation. :-)
    closes: #116955

 -- Karl Ramm <kcr@debian.org>  Thu, 14 Mar 2002 17:05:56 -0500

shadow (20000902-8) unstable; urgency=low

  * check in passwd.expire.cron for already-expired passwords; closes: #102319
  * note in chage.1 and shadowconfig.8 that password aging information
    only works when shadow passwords are enabled. closes: #103702
  * enable changing the name in chfn by default. closes: #107819
  * fail to mangle files in lib/commonio.c, thanks to matt@linuxbox.nu
  * add /dev/console to the secure ttys list.  because.  closes: #113949
  * find the FHS mail spool first in configure.  closes: #114951
    (thanks to mjb@debian.org)
  * above sadly causes automake to go bonkers, and I don't want to
    reassemble the build system before woody is released.  Keep automake
    from going off on its own.
  * terminate argument validation in login when it hits a '--'.
    closes: #66368
  
 -- Karl Ramm <kcr@debian.org>  Mon, 22 Oct 2001 11:17:35 -0400

shadow (20000902-7) unstable; urgency=low

  * the "I'm sorry, I should've done this earlier" release
  * Cancel login timeout after authentication so that patient people
    timing out on network directory services can log in with local
    accounts.  Closes: #107148
  * Add Brazillian Portugese debconf template translation for passwd.
    Closes: #105292, #93223
  * Pull /usr/share/doc/$package/README.shadow-paper.gz.  Closes: #98058
  * Use getent instead of group to verify existence of shadow group
    [works better for distributed group files].  Closes: #99902
    [Note that this sort of problem is rampant in these postinst and
    config scripts, but that's not getting fixed in woody.]
  * Amend reference to /usr/doc in shadowconfig.8.  Closes: #102804
  * su should set $USER.  Closes: #102995
  * userdel now deletes user groups from /etc/gshdow as well as
    /etc/group.  Closes: #99442
  * grpck now has an (otherwise undocumented) -p option, so that
    shadowconfig can clean up the results of the above, so the config
    script will fail randomly less often.  Closes: #103385

 -- Karl Ramm <kcr@debian.org>  Wed, 22 Aug 2001 12:09:27 -0400

shadow (20000902-6.1) unstable; urgency=low
 
  * Non-maintainer upload.
  * Upgrade to latest config.sub and config.guess.  Closes: #88547
 
 -- Gerhard Tonn <gt@debian.org>  Fri,  1 Jun 2001 20:38:43 +0200
                                                              
shadow (20000902-6) unstable; urgency=medium

  * actually set root's password when appropriate
    patch thanks to joeyh, closes #98402
  * fix error in expiry man page.  Such damage. closes: #99291
  * fix group of setgid program chage and expiry, closes: #98122

 -- Karl Ramm <kcr@debian.org>  Thu, 31 May 2001 07:38:59 -0400

shadow (20000902-5) unstable; urgency=low

  * add build dependency on file, to keep libtool happy. closes: #97498

 -- Karl Ramm <kcr@debian.org>  Wed, 16 May 2001 06:57:23 -0400

shadow (20000902-4) unstable; urgency=low

  * Change maintainers, closes: #92355

 -- Karl Ramm <kcr@debian.org>  Sun, 13 May 2001 03:28:07 -0400

shadow (20000902-3.1) unstable; urgency=low

  * Non-maintainer upload
  * Recompile to fix ARM lossage 

 -- Philip Blundell <philb@armlinux.org>  Sun, 11 Mar 2001 07:47:27 -0500

shadow (20000902-3) unstable; urgency=low

  * Update config.sub and config.guess so ia64 compiled, closes: #81897
  * libmisc/sub.c: skip '*' in shell name when doing subsystem, closes:
    #82893
  * src/su.c: don't assume uid 0 == "root", use getpwuid to fetch it,
    closes: #81924
  * This was fixed in a previous version, closes: #77057
  * Update passwd long desc, closes: #88299
  * Conflict with suidmanager << 0.5, and remove suid{,un}register calls,
    closes: #87157
  * Update policy to 3.5.0.0
  * Added debconf support for passwd from base-config

 -- Ben Collins <bcollins@debian.org>  Sat,  3 Mar 2001 07:26:57 -0500

shadow (20000902-2) unstable frozen; urgency=low

  * control.hurd->control.gnu: closes: #77940
  * Cannot reproduce, closes: #79447
  * User never sent a patch, plus I think removing the passwd/account when
    doing passwd -l is a bad idea. Makes it so you cannot unlock the
    account. closes: #77824
  * Don't allow shadowconfig to change perms of other binaries, close: #77057
  * IMO, this is not a bug. It's part of a feature, and can be disabled by
    turning off USER_GROUPS. closes: #76806
  * /bin/login is suid root for several good reasons. For one, it allows
    daemons that use it to run as non-root. This is a good thing since it
    means only one program is running as root, and not several. closes: #17911
  * sulog is fairly easy to grep or parse so I don't see how the
    similarity of the log entries for failed and successful is a problem.
    '-' for failed, '+' for success. closes: #63801
  * logoutd.8: s,/etc/utmp,/var/run/utmp, closes: #80494
  * Fix case where pam_auth returns a NULL username, closes: #76817, #75510
  * Hmm, Linux is a sysv derivative, so the comment is perfectly
    legitimate, closes: #76898
  * MAX_PASSWORD is used by useradd, and CHFN_AUTH is actually used by
  * chfn to decide if the current user needs to auth in order to change
    their info, closes: #71114
  * login.1: Fix \' closes: #75435
  * login -f works for me assuming you call it as root. I tested this with
    plain pam_unix.so, and also with pam_unix.so stacked with pam_ldap.so.
    So if it doesn't work with telnet-heimdal, then that program is not
    doing something right. closes: #78186
  * login.pam.d: made pam_nologin.so requisite. closes: #80111
  * su to root seems pretty quick to me, closes: #64756
  * xmalloc.c: remove decleration of malloc, which was causing system
  * header conflicts. closes: #80398

 -- Ben Collins <bcollins@debian.org>  Sun, 31 Dec 2000 14:33:47 -0500

shadow (20000902-1) unstable frozen; urgency=low

  * New upstream release, lots of Debian patches merged, closes: #72735
  * man/passwd.1: removed reference to passwd(3), closes: #72704
  * man/chsh.1,man/chfn.1: document login.defs affects on these programs,
    closes: #68029
  * not a bug, expected behavior, closes: #74137
  * IMO, this is a bug in the user's setup, closes: #65600
  * securetty: add devfs console devices, closes: #71946
  * libmisc/sulog.c: removed arbitrary limit on number of chars printed of
    the tty name (truncated to 6 chars, which is silly), closes: #65404
  * tested this, and it works fine for me so long as pam_unix.so is called
    with the nullok option (which it isn't by default because of security
    concerns), closes: #75063
  * appears to be fixed by PAM, closes: #70627
  * src/useradd.c: user mkstemp instead of mktemp, per libc6 linktime
    warning
  * src/su.c: fixup arg handling passed to shell, closes: #75326

 -- Ben Collins <bcollins@debian.org>  Mon, 23 Oct 2000 13:22:29 -0400

shadow (19990827-21) unstable frozen; urgency=low

  * Added build deps
  * Use pre-generated files for hurd/linux control file. The old method of
    using cpp would have broken with the new gcc.

 -- Ben Collins <bcollins@debian.org>  Wed, 26 Jul 2000 21:04:03 -0400

shadow (19990827-20) unstable frozen; urgency=low

  * Release Manager
    None of these are marked as RC in the BTS, however, they do make the
    package unsuitable for release. Since this is an essential package (IOW,
    installed on every Debian system), I hope you can see how important it
    is to make sure this package is perfect. None of the changes are
    functional (except the fix in logoutd's init script, which was a 20 char
    change), so please consider this for the next test cycle.
  * Fix logoutd init script from spurious output when /etc/porttime is not
    there, closes: #63962, #64067
  * su: Fix typo in usage output, closes: #60226
  * passwd: Fixed typo and missing newline in output for successful password
    change, closes: #64106, #63703
  * passwd.1: Add documentation on the -f, -e, -s and -d command line
    options, closes: #64339, #64410
  * login: Verified that utmp/wtmp works when called by telnet with -h
    option, closes: #56854

 -- Ben Collins <bcollins@debian.org>  Tue, 23 May 2000 14:40:01 -0400

shadow (19990827-19) unstable frozen; urgency=low

  * debian/local/shells: added esh, closes: #59934
  * logoutd: modify to work with pam_time.so's time.conf file, modify
    manpage to reflect this, closes: #61300
  * userdel.8: added note about group removal, closes: #56723
  * base-config handles md5 setup, closes: #60125
  * cppw: make sure it gets installed, closes: #62960
  * passwd: correct error message for "not you", closes: #61313
  * sulog.c: fixed extern for char (char foo[] -> char *foo), closes: #61643
  * userdel.8: documented userdel's exit values, closes: #54775
  * passwd: error messages are two fold, the second is actually from
    pam_strerror(), closes: #61937
  * passwd: print "success" on successful password change, closes: #58676

 -- Ben Collins <bcollins@debian.org>  Sat, 29 Apr 2000 10:26:56 -0400

shadow (19990827-18) unstable frozen; urgency=low

  * Crap, all the bug fixes from -17 need to go to frozen too

 -- Ben Collins <bcollins@debian.org>  Tue, 29 Feb 2000 14:57:14 -0500

shadow (19990827-17) unstable; urgency=low

  * Fixed typo in login.defs, closes: #54877
  * logoutd.init.d: Check for /etc/security/time.conf, closes: #54900
  * login.defs: Added note about the MAIL env option, closes: #54768
  * login.pam.d,passwd.pam.d: Use new options in pam_unix.so to enable
    obsure password checks. This mimics the old behavior in pre-PAM
    shadow, closes: #58203
  * Use patch from Topi Miettinen <tom@pluto.nic.fi> to add pam session
    ability to su, closes: #57526, #55873, #57532
  * Made login's -f option also able to use the username after -- if none
    was passed as it's optarg, closes: #53702

 -- Ben Collins <bcollins@debian.org>  Mon, 28 Feb 2000 12:37:22 -0500

shadow (19990827-16) unstable; urgency=low

  * got rid of g+s directories in the source tarball, closes: #54585
  * make su mode 4755 in the package. This way there is no chance of a
    failed dpkg install causing it to be left without suid root perms
    before suidmanager or chmod is called in the postinst.
  * src/login.c: added faillog support to the pam_authenticate loop. This
    loop is now completely rewritten, and should produce better results on
    failures, closes: #53164

 -- Ben Collins <bcollins@debian.org>  Sun,  9 Jan 2000 23:35:08 -0500

shadow (19990827-15) unstable; urgency=low

  * src/su.c: moved signal() call to re-establish SIGINT to right place,
    closes: #54496
  * src/login.c: if hostname is blank (not a remote login via rlogin or
    telnet), then use the tty to log failures in syslog, closes: #53966
  * passwd: Locking a password by appending '!' appears to be pretty
    standard, so ssh needs to check for it.
  * passwd and login come with a README.pam that discusses the differences
    between the PAM and old non-PAM versions. It also talks about where to
    look for details. Also now that I have added the extra examples to the
    pam.d files, I hope this satisfies...closes: #52917
  * A new package, base-config, which will be used by boot floppies is
    going to have an option to configure MD5 usage for passwords. Since
    this is the best place for it, and I don't really have any control
    over it, I am .... closes: #47620
  * libmisc/chowntty.c: applied patch for read-only root, closes: #52069

 -- Ben Collins <bcollins@debian.org>  Sat,  8 Jan 2000 22:11:29 -0500

shadow (19990827-14) unstable; urgency=low

  * debian/local/shells: added /bin/zsh, closes: #53883

 -- Ben Collins <bcollins@debian.org>  Sun,  2 Jan 2000 13:51:42 -0500

shadow (19990827-13) unstable; urgency=low

  * su.c: ignore SIGINT while authenticating, closes: #52372
  * su.pam.d: added 2 new examples of how to allow su for wheel users
    without prompting for a password, and also how to deny users of a
    specific group.

 -- Ben Collins <bcollins@debian.org>  Sat,  1 Jan 2000 22:29:46 -0500

shadow (19990827-12) unstable; urgency=low

  * Recompiled against latest libpam and up'd the module deps,
    closes: #52171
  * login.pam.d: added "noenv" option so we don't clobber login's setting,
    closes: #51441

 -- Ben Collins <bcollins@debian.org>  Tue, 14 Dec 1999 22:41:40 -0500

shadow (19990827-11) unstable; urgency=low

  * debian/passwd.in: add a preinst (matches login's) to fix the latest
    build change (only affected hurd since it doesn't use login).
  * debian/scripts/passwd.mk: use passwd.preinst instead of login.preinst
    to complete the fix above.

 -- Ben Collins <bcollins@debian.org>  Mon,  6 Dec 1999 18:25:07 -0500

shadow (19990827-10) unstable; urgency=low

  * src/login.c: only set pam_fail_delay if > 0. Also make the default 0
    so not defining it has the same affect as disabling it, closes: #51178
  * src/userdel.c: make sure we remove the shadow group entries when
    removing the users own group, closes: #50005, #50138

 -- Ben Collins <bcollins@debian.org>  Fri, 26 Nov 1999 22:37:44 -0500

shadow (19990827-9) unstable; urgency=low

  * src/su.c: Fixed getopt parsing, and added a usage output
  * man/su.1: minor typos

 -- Ben Collins <bcollins@debian.org>  Mon,  8 Nov 1999 22:13:05 -0500

shadow (19990827-8) unstable; urgency=low

  * src/login.c: fixed loggin of username on successful login (was using
    the normal username, when it should have used pam_user),
    closes: #47819
  * src/login.c: check for hushed login and pass PAM_SILENT if true,
    closes: #48002
  * src/useradd.c: set def_shell to /bin/bash, closes: #48304
  * doc/README.debian: add note about how to avoid issues with nscd's
    lag in aging the cache, closes: #48629
  * src/cppw.c: new program to assist copying a passwd/group file without
    corruption, closes: #42141

 -- Ben Collins <bcollins@debian.org>  Tue,  2 Nov 1999 21:46:28 -0500

shadow (19990827-7) unstable; urgency=low

  * {passwd,login}.pam.d: added blurb about how to use the pam_cracklib
    module, and also changed it to use pam_unix and not pam_pwdb (gah!
    how did that happen?), closes: #46983
  * README.debian: changes to reflect new PAM usage as well as removing
    references to obsolete config files, closes: #46595
  * passwd.expire.cron: example script that informs users by email when
    their accounts are about to expire, closes: #41393
  * lastlogin.c: added -h option and usage as well as long option support,
    closes: #45804
  * shadow now only has 3 wishlist bugs and nothing else

 -- Ben Collins <bcollins@debian.org>  Sat,  9 Oct 1999 11:54:16 -0400

shadow (19990827-6) unstable; urgency=low

  * debian/shells: new file, needed to include /bin/sash, closes: #45826
  * useradd.8,groupadd.8: added note about the preferred use of adduser
    and addgroup when conforming to Debian policy (taken from notes in
    adduser's man pages), closes: #22821
  * dialups.5: new man page that documents /etc/{dialups,d_passwd},
    closes: #42212
  * src/su.c: added -m, -p and -s command line options to match GNU options,
    also documented in su(1), closes: #45394, #46424
  * login.defs.5: clarified usage of TTYTYPE_FILE, closes: #23194
  * login.pam.d: added pam_issue.so which replaces the old ISSUE_FILE from
    login.defs, this also allows it to grok escapes in the issue file,
    also increases the MODDEPS to (>= 0.69-10). By default this module is
    not enabled, closes: #21044
  * login.defs.pam.linux: added ISSUE_FILE to list of deprecated options

 -- Ben Collins <bcollins@debian.org>  Mon,  4 Oct 1999 19:56:22 -0400

shadow (19990827-5) unstable; urgency=low

  * {login,su}.1: added description of a subsystem login, closes: #31987
  * src/chowndir.c: fixed recursive chown's on usermod, also changed it
    to use lchown and lstat since we actually want that, closes: #46405
  * su.1: removed reference to suauth as well as added "-c" to the SYNOPSIS,
    closes: #45685
  * login.1: added options to the SYNOPSIS and documented OPTIONS,
    closes: #28763
  * login.defs.5: documented the ENVIRON_FILE options (even though it's
    not really used in the PAM version), close: #28786
  * 010_src_gpasswd.c: new patch, fixes changing group passwords when not
    using shadow groups, closes: #25919
  * {chfn,chsh,login}.pam.d: added nullok to pam_unix.so auth line to
    allow for passwordless accounts, closes: #46510
  * login.pam.d: add "standard" to the pam_mail option so we get old
    style "You have..." login messages.

 -- Ben Collins <bcollins@debian.org>  Sun,  3 Oct 1999 13:41:53 -0400

shadow (19990827-4) unstable; urgency=low

  * Alright, we are really getting some usage from this now, and seeing
    some odd ball setups, so it means more work for me, but more stable
    and feature filled software for you :)
  * debian/{login,su}.pam.d: Fixed spelling errors, closes: #45234, #45235
  * debian/login.pam.d: Added commented pam_access.so reference and
    description, closes: #45241
  * src/login.c: moved usage of setup_uid_gid() when PAM is enabled or
    pam_groups.so's groups get clobbered
  * src/newgrp.c: don't call sanitize_env() and also make sure we don't
    check passwords when the user is trying to get back to their default
    group, closes: #22244
  * Closed some other bugs that were either not really bugs, or they weren't
    reproducible.
  * debian/login.pam.d: moved around the pam_motd and pam_mail modules to
    order them the same as old login would have done

 -- Ben Collins <bcollins@debian.org>  Sun, 19 Sep 1999 19:42:13 -0400

shadow (19990827-3) unstable; urgency=low

  * This is a "Sit down and really fix some bugs" update. I'm going through
    the ones that really need some work.
  * src/vipw.c: use the system() call to invoke the editor so that it accepts
    command line args in the EDITOR and VISUAL environment vars, closes: #31029
  * src/userdel.c: added code to remove user groups (of the same name) if there
    were no members left and USERGROUPS_ENAB is set to yes, closes: #35046
  * login.defs: documented above change
  * {login,passwd}.postinst: fixed some bashisms, closes: #45159
  * login.defs.pam.linux: documented the FAKE_SHELL option, closes: 31987
  * su.1,login.1: documented the subsystem root ability in login and su, closes: 
  * doc directory for both packages now includes the README.shadow-paper file
    closes: #15391

 -- Ben Collins <bcollins@debian.org>  Sun, 19 Sep 1999 15:49:11 -0400

shadow (19990827-2) unstable; urgency=low

  * debian/rules: use "$(CC) -E" instead of "cpp" to make it easier to
    cross compile for Hurd (requested by Marcus Brinkman).
  * debian/login.pam.d: forgot to remove that comment about login not
    being PAMified, it is and works fine.
  * src/login.c: Added login.defs option to turn on and off the persistent
    login, also give note on when it isn't and is needed in login.defs.
  * lib/getdef.c: Added CLOSE_SESSIONS for above code.
  * man/login.defs.5: document the new CLOSE_SESSION option for login
  * logoutd: disabled until I can fix it to grok /etc/security/time.conf

 -- Ben Collins <bcollins@debian.org>  Mon, 13 Sep 1999 18:57:47 -0400

shadow (19990827-1) unstable; urgency=low

  * New Maintainer, with Guy's consent.
    closes: #22296, #22331 (closed some NMU bug reports)
  * New upstream release, closes: #15879, #24712, #25739, #28785, #32991
    closes: #38672, #39933, #41060, #42480, #22534, #12690, #36150, #26412
    closes: #40398, #43750
  * Ok, now for some dusting and house cleaning (aka The Bug Killfile
    Begins Here):
  %%- login package
    - Not a bug in login anymore, closes: #28098
    - No longer pertinent, and is not controlled by the login program,
      closes: #23155
    - This does not appear to be a bug anymore, closes: #32424
    - This is not a login problem. Xterm itself prints the LOGIN message
      and it does _not_ read login.access, closes: #16958
    - Seems to be fixed, closes: #28098
    - Huge list of "Fixed" bugs, that I want to close. I really need to
      start with a clean slate in order to get some of this cleaned up,
      closes: #3439, #11443, #13485, #13815, #15176, #15998, #16187, #17529
      closes: #17532, #17532, #18133, #18225, #20052, #20876, #21280, #21357
      closes: #21687, #21695, #21746, #21767, #22716, #24710
    - lastlog(8): Clarified differences in the usage of "login-name" and
      UID, closes: #26727
  %%- passwd package
    - newuser: appears to be working correctly and placing x, not !,
      closes: #19620
    - userdel(8): added note about user's mail spool also being deleted,
      closes: #20790
    - Can't reproduce this one, closes: #21639
    -  -e expire_date
          The  date  on  which  the user account will be dis-
          abled.   The  date  is  specified  in  the   format
          MM/DD/YY.
      Bug filer was trying to use an integer instead of the documented
      format, closes: #22533
    - chfn's command line options seem to work for root and non-root,
      closes: #25396
    - seems to have been fixed by the latest upstream, #25670
    - Removed references to shadow(3), closes: #32859
    - passwd only saves first 8 chars...duh :) closes: #33368
    - userdel can only do so much, the admin should know to check some
      things on their own, closes: #35418
    - Lot's of Y2K issues fixed in this release, closes: #37232
    - useradd requires the -m option to make it create a home directory
      if one does not exist, closes: #39581
    - useradd's -p option requires the password to already be encrypted
      as documented in useradd(8), closes: #39870, #39874
    - More "Fixed" bugs in passwd, closes: #13753, #16893, #17894, #18132
      closes: #18628, #12691
  %%- su (no longer a package, but has bugs just the same, will be
      forwarded to the login package soon)
    - Sorry, but su (all su's) invoke the shell with -c "cmd". This is
      documented, not a bug, it's a standard interface that su expects,
      go fix sash's bug for not supporting it, closes: #14551
    - Acknoledged NMU: closes: #20058
    - More "Fixed" bugs getting closed...CLOSED AT LAST, closes: #17593
      closes: #20057, #12689
  * Switched to a new build setup (dbs)
  * Split makes into separate files to make it a little cleaner
  * FHS compliance changes (usr/{doc,man} to usr/share/{doc,man})
  * debian/tar.c: removed
  * su: su is now going to be provided by shadow's login package and
    removed from shellutils (the shellutils maintainer agreed to this)
    in preparation for future PAM support. Added conflicts with older
    version of shellutils that does provide the su binary.
  * debian/control.in: removed the secure-su package since login now
    contains su and all of it's components
  * debian/control.in: modified the package descriptions to be a little
    more explicative of what they do.
  * Upgraded standards version to 3.0.1.1
  * Setup suidmanager support for all +s apps, closes: #15705, #15704, #15699
  * Enabled PAM. Support now for su, passwd, chfn, chsh. I am working on the
    support in login.
  * expiry: Changed to be installed as sgid shadow instead of suid root
    since it doesn't need root privileges. Also added man page expiry(1) based
    on the comments found in expiry.c.
  * Removed bashism's in control scripts. Now lintian clean (smells fresh too)
  * chage.c: Keep chage from locking when not running as root, since it just
    needs to read the shadow and password files. This let's it run sgid shadow
    instead of suid root. When run as root, it can lock files for editing.
  * login.c: Pam support Works For Me(tm)!
  * login.c: Fixed PAM's auth when PAM_USER was not set from the command line,
    also call pam_fail_delay() with FAIL_DELAY as the arg before authentication.
  * etc/login.defs.pam.linux: new file, reflects options that PAM takesover
  * etc/login.defs.pam.hurd: new file, same for Hurd
  * debian/passwd.mk: make sure that login.defs.5 get's installed for Hurd
  * pam.d/: Modified defaults for each service to reflect the old style and also
    added commented options on how to enable obsoleted options from login.defs
    in the PAM Way(tm).
  * debian/rules: removed --disable-desrpc from configure options since it was
    supposedly just a workaround for glibc 2.0
  * src/login.c: reset pam_fail_delay after every failure
  * debian/rules: remove debian/files on clean target
  * src/login.c: removed setup_limits() and check_nologin() usage when PAM is
    enabled
  * debian/login.pam.d,debian/login.defs.pam.linux: made notes about the pam_limits.so
    module, as well as pam_nologin.so
  * debian/su.pam.d: made notes about pam_limits.so module
  * debian/control.in: removed depends on libpam-motd since it is now in libpam-modules,
    also make login conflict with secure-su
  * debian/*: setup so that Hurd does not get PAM, since they don't have it ported
    completely yet.
  * debian/*: Final approach to a final upload, modified login.postinst to check old
    obsolete conffiles to see if the user needs a notice that they are no longer used.

 -- Ben Collins <bcollins@debian.org>  Sat, 11 Sep 1999 19:58:14 -0400

shadow (980403-0.3.3) unstable; urgency=low

  * Non maintainer upload.
  * Add dpkg-architecture and cross compilation support to the package.
  * Changes for the Hurd:
    + Only build passwd, add etc/login.defs.hurd to this package.
    + libmisc/rlogin.c: Conditionalize CBAUD, which is not portable.

 -- Marcus Brinkmann <brinkmd@debian.org>  Thu,  5 Aug 1999 00:28:12 +0200

shadow (980403-0.3.2) unstable; urgency=low

  * configure.in patched for utmpx.h (for arm)
  
 -- Jim Pick <jim@jimpick.com>  Sun,  4 Oct 1998 19:06:15 -0700

shadow (980403-0.3.1) frozen unstable; urgency=low

  * Non maintainer upload.
    changes.{guess,sub} changed to recognize a Arm architecture.

 -- Turbo Fredriksson <turbo@debian.org>  Fri, 14 Aug 1998 22:37:58 -0400

shadow (980403-0.3) frozen unstable; urgency=high

  * Non maintainer upload.
  * src/login.c: Applied patch from <marekm@i17linuxb.ists.pwr.wroc.pl> to
    fix security hole of login not checking the return code from setgid(),
    initgroups() or setuid(). [#24710]

 -- James Troup <james@nocrew.org>  Fri, 17 Jul 1998 18:56:31 +0100

shadow (980403-0.2) frozen unstable; urgency=low

  * (login.defs): fixed UMASK
    (thanks to James Troup for noticing my screwup :)
  * Pruned non-Debian changelog entries.

 -- Joel Klecker <jk@espy.org>  Mon, 11 May 1998 11:25:22 -0700

shadow (980403-0.1) frozen unstable; urgency=low
  
  * Non-maintainer release.
  * New upstream release (18225).
  * (debian/login.postinst)
    * Use 'touch' instead of 'cat >' when creating /var/log/faillog
      (15998,16187,21687).
    * No longer fails if no previous configured version exists (11433).
  * (gpasswd): now checks which user invoked it before calling setuid() (18132).
  * (debian/passwd.postinst): removed bashism (13753).
  * (groupmod): NULL dereference fixed upstream, as a result, it no longer
    dumps core when changing group name (16893,17894).
  * (useradd): no longer segfaults if /etc/default/useradd is missing (18628).
  * (login.defs.1): now documents more options (13485).
  * (source): includes 'missing' (13815,18133,21280).
  * (login.1):
    * Removed mention of "d_passwd(5)", which doesn't exist,
      and login.defs.5 now documents /etc/dialups (15176).
    * Added /etc/nologin to FILES section and reference nologin(5) (21695).
  * The URL mentioned in Bug#15391 is no longer valid.
  * (login.defs): no longer sets ULIMIT (17529).
  * (login):
    * No longer uses static buffers for group lines (17532).
    * Doesn't seem to make assumptions about gid_t any longer (21767).
  * (faillog.8): s-/usr/adm-/var/log-g (19974).
  * (lastlog.8): notes that "some systems" use /var/log instead of
    /usr/adm (21746).
  * Install upstream changelog as 'changelog.gz' as per policy (20052).
  * (secure-su): Changed /etc/suauth to reference the group 'root'
    instead of 'wheel' (17593).
  
 -- Joel Klecker <jk@espy.org>  Thu, 30 Apr 1998 18:32:12 -0700

shadow (970616-1) unstable; urgency=low

  * Upstream upgrade.
  * chage works (10561).
  * Fix NIS behavior (5634,8734,10032,10545,10984,11160,12064).
  * Wrote pwconv,pwunconv,grpconv,grpunconv manpage (10940).
  * vipw fixes (10521,10696,11618,11924,12184,13001)
  * Fixes for new automake.
  * Compile with glibc2. (8627,8777,9824,11713,11719,12082,12108,11442).
  * debian/rules fixes (8876,12468).
  * /etc/login.defs: UMASK=002 (9102).
  * chown /dev/vcs* on login (9421,13255).
  * Added tty9-tty12 to /etc/securetty (11644).
  * Provide template and manpage for /etc/limits (12289).
  * Fix security hole in postinst (11769).
  * login fills out ut_addr field in utmp (10701).
  * shadowconfig.sh fixes (9189,9328,9386,10968,12452,12469).
  * Overcome postinst bug in old shadow-passwd package (9939,12120).
  * useradd default GROUP=100 (9244).
  * Allow 8 bit chars in chfn (12367).
  * secure-su - set HOME, use SHELL if set (11003,11189).

 -- Guy Maor <maor@ece.utexas.edu>  Fri, 26 Sep 1997 19:23:42 -0500

shadow (970616) unstable; urgency=low

  * vipw preserves permissions on edited files (10521).
  * various other bug fixes.

 -- Marek Michalkiewicz <marekm@piast.t19.ds.pwr.wroc.pl>  Mon, 16 Jun 1997 02:02:00 +0200

shadow (970601) unstable; urgency=low

  * Fix typo in libmisc/mail.c causing login to segfault.

 -- Marek Michalkiewicz <marekm@piast.t19.ds.pwr.wroc.pl>  Mon,  2 Jun 1997 07:33:00 +0200

shadow (970502-2) unstable; urgency=low

  * Fixes to shadow group support (grpconv didn't work).

 -- Marek Michalkiewicz <marekm@piast.t19.ds.pwr.wroc.pl>  Fri,  2 May 1997 15:48:00 +0200

shadow (970502-1) unstable; urgency=low

  * Upstream upgrade.

 -- Marek Michalkiewicz <marekm@piast.t19.ds.pwr.wroc.pl>  Fri,  2 May 1997 03:18:00 +0200

shadow (961025-2) frozen unstable; urgency=medium

  * Fix useradd -D segfault (8098, 8152, 8733).
  * Fix shadowconfig - permfix only on xlock; /etc/init.d/xdm rewrite, chmod
    (8102, 8320, 8333, 8708).
  * Remove HOWTO from usr/doc/passwd as it's in linux-doc (8150).
  * Fixes to su.1 (8153).
  * login, passwd, su each conflict and replace with the old shadow-*
    version. (8269, 8290, 8393, 8394).
  * Put /etc/shells back in passwd (8328).
  * Fixed login.postinst for upgrade from shadow-login (8392).
  * Added -e to pwck for use in shadowconfig: reports only errors, no
    warnings (8542).
  * Wrote shadowconfig.8 (8588).

 -- Guy Maor <maor@ece.utexas.edu>  Sat, 19 Apr 1997 02:34:59 -0500

shadow (961025-1) unstable; urgency=low
  
  * Upstream upgrade, new source format.

 -- Guy Maor <maor@ece.utexas.edu>  Mon, 10 Feb 1997 02:56:56 -0600

