Russ Allbery [Sun, 17 May 2020 06:10:15 +0000 (23:10 -0700)]
Update debian/copyright and include cracklib license
* Include the full text of the license of the embedded copy of cracklib
(not used in the Debian build) in debian/copyright, since it's not
identical to the Artistic license included in common-licenses.
Russ Allbery [Sun, 17 May 2020 02:41:15 +0000 (19:41 -0700)]
Increase iterations for history hashing
Increase hash iterations for heimdal-history by roughly a factor of
four to increase the time required for a password hash to about 0.1
seconds on modern hardware. This will affect newly-stored history
entries but will not invalidate existing password history entries.
Russ Allbery [Sun, 17 May 2020 02:24:53 +0000 (19:24 -0700)]
Add new --check-only option to heimdal-history
Add new -c (--check-only) option to heimdal-history to check whether a
password would be accepted without updating the history or password
length databases. Based on work by macrotex.
Russ Allbery [Sun, 17 May 2020 01:02:25 +0000 (18:02 -0700)]
Remove initializations older cppcheck doesn't like
Current cppcheck is better about ignoring initializations that
don't matter, but the older version running on GitHub Actions
complaints. Fix a couple of those initializations to fix tests.
Russ Allbery [Sun, 17 May 2020 00:59:23 +0000 (17:59 -0700)]
Fix tests when built with system CrackLib
Skip tests that require the stronger rule configuration in the
embedded CrackLib when built against system CrackLib. This avoids
test failures when built with system CrackLib.
Russ Allbery [Sat, 16 May 2020 23:40:36 +0000 (16:40 -0700)]
Rework valgrind testing
Rework the check-valgrind target to use the new C TAP Harness valgrind
support and automatically check the valgrind log files for errors at
the end of the test suite.
Russ Allbery [Sat, 16 May 2020 22:42:42 +0000 (15:42 -0700)]
Use explicit_bzero to overwrite passwords
Use explicit_bzero instead of memset, where available, to overwrite
copies of passwords before freeing memory. This reduces the lifetime
of passwords in memory.
Russ Allbery [Sat, 16 May 2020 21:59:09 +0000 (14:59 -0700)]
Do not install libtest-spelling-perl for CI
Installing the libtest-spelling-perl package also installs
libperl-critic-perl, and although we later install a newer version,
Perl::Critic dynamically picks up all of its policy modules. This
means that installing the Ubuntu package will install obsolete
policy modules that will then be run during the test suite, causing
spurious failures.
Russ Allbery [Sat, 16 May 2020 20:34:17 +0000 (13:34 -0700)]
Update to rra-c-util 8.2 and C TAP Harness 4.7
Update to rra-c-util 8.2:
* Implement explicit_bzero with memset if it is not available.
* Reformat all C source using clang-format 10.
* Work around Test::Strict not skipping .git directories.
* Fix warnings with perltidy 20190601 and Perl::Critic 1.134.
* Improve check for obsolete strings.
* Use a more standard all-permissive license.
* Add SPDX-License-Identifier headers to all substantial source files.
* Skip more build system files when running the test suite.
* Fix warnings with Clang 10, GCC 10, and the Clang static analyzer.
* Exclude more valgrind false positives with Kerberos libraries.
Update to C TAP Harness 4.7:
* Fix warnings with GCC 10.
* Reformat all C source using clang-format 10.
* Fixed malloc error checking in bstrndup.
* Add support for valgrind testing via test list options.
* Report test failures as left and right, not wanted and seen.
* Fix is_string comparisons involving NULL pointers and "(null)".
* Add SPDX-License-Identifier headers to all substantial source files.
Russ Allbery [Sun, 25 Dec 2016 19:50:14 +0000 (11:50 -0800)]
Change CrackLib tests for system CrackLib
The upstream test suite contains a few tests that fail with the
normal system CrackLib rules. Modify them to expect passes so
that we can run the full test suite during the build.
Also remove CrackLib when testing character classes, since it
rejects the passwords used for minimum_different testing as too
simplistic.
Gbp-Pq: Name 0001-Change-CrackLib-tests-for-system-CrackLib.patch
Russ Allbery [Fri, 31 Aug 2018 23:53:16 +0000 (16:53 -0700)]
Update standards version to 4.2.1
* Update standards version to 4.2.1.
- Enable verbose test output.
- Install the upstream release notes as NEWS.gz, not changelog.gz.
- Add Rules-Requires-Root: no.
- Use https for URLs in debian/copyright.
- Change priority to optional.
Russ Allbery [Mon, 22 May 2017 02:35:52 +0000 (19:35 -0700)]
Support building without CrackLib support
Support building without CrackLib support by passing
--without-cracklib to configure. This makes the code a bit simpler
and lighter if you don't intend to ever use the CrackLib support.
Russ Allbery [Sun, 25 Dec 2016 19:51:50 +0000 (11:51 -0800)]
Fix test suite results with system CrackLib
* Patch the upstream test suite to change the expected results for a few
passwords that are rejected by the embedded CrackLib but accepted by
the system CrackLib (which the Debian package is built with).
Russ Allbery [Mon, 19 Dec 2016 02:58:34 +0000 (18:58 -0800)]
Handle errors in heimdal-strength tests better
In Travis CI, the heimdal-strength test was failing with a broken
pipe. Apparently the timing was such that the child process would
exit with an error before IPC::Run could try to write the input,
and then IPC::Run would die with a broken pipe. Work around this
by allowing a flag to be passed to run_heimdal_strength saying whether
to expect an error, and don't send input in that case.
Russ Allbery [Sat, 26 Nov 2016 07:02:05 +0000 (23:02 -0800)]
Move configuration instructions to man pages
Create a new krb5-strength man page that gets the configuration
instructions for the plugins (with the proper path substituted in
by the Makefile) and move other configuration details to the
heimdal-strength and heimdal-history man pages. Duplicate the
documentation for cracklib_maxlen in the heimdal-strength man page.
This will make it easier to automate generation of the README file,
since it will now require less complex formatting.
Russ Allbery [Mon, 7 Nov 2016 06:23:13 +0000 (22:23 -0800)]
Fix some sorting bugs in embedded CrackLib
Patch the mkdict and packer in the embedded copy of CrackLib to force
C locale when sorting (avoiding a corrupted dictionary) and warn and
skip out-of-order words rather than creating a corrupted dictionary.
Patch from Mark Sirota.
Russ Allbery [Mon, 7 Nov 2016 02:27:57 +0000 (18:27 -0800)]
Update to rra-c-util 5.7 and C TAP Harness 4.1
Update to rra-c-util 6.2:
* Use calloc in preference to malloc wherever appropriate.
* Use reallocarray in preference to realloc wherever appropriate.
* Suppress warnings from Kerberos headers under make warnings.
* Support the embedded Kerberos in Solaris 10 in library probes.
* Add missing va_end in xasprintf implementation.
* Fix logic in Test::RRA::Automake for new Automake dist checking.
* Fix all return-value checks for snprintf to avoid off-by-one error.
* Update warning flags for make warnings to GCC 6.1.0.
* Fix Test::RRA::Config for new "do" semantics in Perl 5.22.2.
* Add a new test for obsolete eyrie.org URLs.
* Require Test::Strict 0.25 or newer for Perl strictness checks.
Update to C TAP Harness 4.1:
* Replace all remaining uses of sprintf.
* Test lists may now have comments and blank lines.
* runtests -v will show the complete output from a test.
* Fix segfault in runtests when given an empty test list.
* Tests use C_TAP_SOURCE and C_TAP_BUILD instead of SOURCE and BUILD.
Jorj Bauer [Sun, 6 Nov 2016 23:08:57 +0000 (15:08 -0800)]
Add option to bypass CrackLib for longer passwords
Add a trapdoor length, after which cracklib doesn't function. This is
done via a cracklib_maxlen option to krb5.conf. passwords of that length
or shorter are still vetted. (0, the default, performs the cracklib
fascist check at any length.)
CrackLib was designed to work with passwords, when passwords were 5-8
characters long. CrackLib makes working with passphrases difficult,
rejecting some good ones. The SQLite dictionary can be seeded with
Engligh trigrams, providing a compensating control. Ergo, CrackLib
shouldn't be vetting passphrases; we should leave that to SQLite.
Russ Allbery [Wed, 19 Oct 2016 16:12:30 +0000 (09:12 -0700)]
Double buffer size in Mangle to allow for duplicate rules
No duplicating rules are enabled for the default rule set that is
run by the krb5-strength package, but close the latent security
vulnerability anyway.
Russ Allbery [Thu, 15 May 2014 05:03:42 +0000 (22:03 -0700)]
Fix heimdal-history with the default DB_File::Lock
Change the DB_File::Lock calling method in heimdal-history to work
properly with the (buggy) CPAN version of DB_File::Lock, instead of
relying on Debian's patched version. Thanks to Bernt Jernberg for the
report.
Russ Allbery [Thu, 27 Mar 2014 19:58:58 +0000 (12:58 -0700)]
Begin error messages with a capital letter
Change the error messages returned for passwords that fail strength
checking to start with a capital letter. This appears to be more
consistent with the error message conventions used inside Heimdal.
Russ Allbery [Wed, 26 Mar 2014 07:52:01 +0000 (00:52 -0700)]
Manage a _history user and the history database directory
* Create a _history user and group and a /var/lib/heimdal-history
directory on package installation for the use of heimdal-history,
remove the user and the standard database on purge, and remove the
directory if empty on package purge or removal.