openafs/tests
Andrew Deason cbc5c4b51f tests: Modernize writekeyfile.c
tests/auth/writekeyfile.c contains some code used to generate
tests/auth/KeyFile, which is used to test code interpreting the
old-style KeyFile format. This code currently has a few problems:

- We don't check the results of afstest_mkdtemp, which could allow
  symlink attacks from other users on the system.

- We duplicate some logic from afstest_BuildTestConfig, in order to
  build a temporary config dir.

- writekeyfile isn't built or run by default (it only exists to
  generate KeyFile, so it's almost never run), so eventual bitrot is
  quite likely, and the existing code already generates warnings.

To avoid this, change writekeyfile.c to use the existing
afstest_BuildTestConfig to generate a local config dir. To ensure we
avoid bitrot, build writekeyfile by default, and create a test to run
it, to make sure it can generate a KeyFile as expected.

Note that the KeyFile.short we test against is different than the
KeyFile currently in the tree. The existing KeyFile was generated from
an older OpenAFS release, which always generated 100-byte KeyFiles,
even if we only have a few keys. The current codebase only writes out
as much key data as needed, so the generated KeyFiles are shorter (but
still understandable by older OpenAFS releases).

Keep the old 100-byte KeyFile around, since that's what older OpenAFS
would generate, and create a new KeyFile.short to test against, to
make sure our code for generating KeyFiles doesn't change any further.

Change-Id: Ibe9246c6dd808ed2b2225dd7be2b27bbdee072fd
Reviewed-on: https://gerrit.openafs.org/14246
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
2020-06-19 11:48:57 -04:00
..
auth tests: Modernize writekeyfile.c 2020-06-19 11:48:57 -04:00
bozo tests: Run perl via 'env' 2020-04-17 20:12:42 -04:00
bucoord tests: Run perl via 'env' 2020-04-17 20:12:42 -04:00
cmd tests: Fix most tests for objdir builds 2019-12-13 00:03:21 -05:00
common tests: Emulate mkdtemp when not available 2020-06-19 10:54:07 -04:00
kauth tests: Run perl via 'env' 2020-04-17 20:12:42 -04:00
opr tests: Skip SIGBUS test on FreeBSD 2020-04-26 17:35:35 -04:00
ptserver tests: Run perl via 'env' 2020-04-17 20:12:42 -04:00
rpctestlib Remove dead code 2019-08-23 09:36:44 -04:00
rx tests: Give more leeway in rx/event-t 2020-05-01 17:37:05 -04:00
tap tests: Start using the upstream C TAP harness 2012-05-11 16:36:44 -07:00
tests-lib/perl5 tests: Fix manpage tests for objdir builds 2019-12-20 11:29:45 -05:00
util tests: Fix most tests for objdir builds 2019-12-13 00:03:21 -05:00
venus tests: Run perl via 'env' 2020-04-17 20:12:42 -04:00
volser tests: Run perl via 'env' 2020-04-17 20:12:42 -04:00
.gitignore tests: Add core to .gitignore in tests 2020-03-20 15:56:12 -04:00
libwrap tests: use exec to call libwrap'd executables 2016-12-16 16:25:58 -05:00
Makefile.in tests: Fix most tests for objdir builds 2019-12-13 00:03:21 -05:00
README correct whitespace errors in readme files 2013-01-07 07:40:46 -08:00
TESTS tests: Modernize writekeyfile.c 2020-06-19 11:48:57 -04:00

This directory contains a test harness and the beginnings of what is
intended to become the primary OpenAFS test suite.  The tests in this
directory are run when "make check" is run at the top level of the OpenAFS
tree.

runtests is the test harness, and TESTS is the list of tests that it
will run.  If you add a new test, add it to TESTS as well.  All tests must
be executables (possibly shell scripts or Perl scripts) that end in either
".t" or "-t", but should be listed in TESTS without that suffix.

Tests should be organized into subdirectories, and where it makes sense to
do so, those subdirectories should match the subdirectory names under src
in the AFS source tree.  In other words, tests for src/util/* should go in
a directory named util, tests for the libkopenafs library should go in a
directory named kopenafs, and so forth.  To integrate with the build
system, each subdirectory will need to have its own Makefile.in and be
added to the list of generated Makefiles in configure.in at the top
level.   The Makefile.in in this directory will also need to be modified
to recurse into any new directories.  See util/Makefile.in for an example
of how to write a Makefile.in for a new test directory.

The files comprising the test harness are sourced from the C TAP Harness
distribution using the src/external mechanism. The upstream site for that
distribution is at:

    http://www.eyrie.org/~eagle/software/c-tap-harness/

but feel free to propose modifications directly through OpenAFS Gerrit.
Russ Allbery will take care of merging modifications upstream.  However,
OpenAFS-specific modifications should not be made to those files.  To add
additional OpenAFS-specific code to the TAP library, add additional *.c
and *.h (or *.sh) files to the tests/tap directory rather than modifying files
in src/external.

More information can be found in the HOWTO contained in
src/external/c-tap-harness/HOWTO