rxkad: Improve ticket5 import from Heimdal 16/13816/3
authorAndrew Deason <adeason@sinenomine.net>
Mon, 26 Aug 2019 21:54:55 +0000 (16:54 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Thu, 29 Aug 2019 06:20:54 +0000 (02:20 -0400)
commit75a5c1b06e44bb6207cee7bd653cda688869aade
tree816326981a7d272e02841f34b1a1e4cb98978444
parentb9b5385e6a04dcacd180f33e39495c7909fe4df3
rxkad: Improve ticket5 import from Heimdal

The current method of importing our ticket5 code from Heimdal has a
few issues:

- The der-protos.h file we generate contains numerous function
  prototype declarations that looks like this:

    ret-type func(parm-list, type */* comment */);

  which cause numerous warnings on WINNT, because the '*/*' sequence
  looks like the end of a nonexistent comment. This was previously
  fixed manually in commit 8b5d3a73 (rxkad: remove warnings from
  der-protos.h), but each time we regenerated our ticket5 code, the
  same thing would happen.

- We manually insert an include for "asn1_err.h" in our v5der.c, and
  the v5gen.c we pull in has an include for <asn1_err.h> inside it.
  During a WINNT build, these can pull in different asn1_err.h files
  (one from us, and one from the "Heimdal compatibility layer SDK" or
  anything else in our include paths). Since the asn1_err.h in our
  tree doesn't have an include guard, the code for both gets included,
  which can cause various problems.

- Our current asn1_err.h file that we include is ultimately generated
  by the awk-based compile_et from e2fsprogs, not the C-based
  compile_et from Heimdal. This likely happened by accident because
  the Heimdal build system uses the system compile_et by default. This
  flavor of compile_et generates arguably inferior comerr-based header
  files (they lack include guards, and they use #define constants
  instead of enums).

Fix these issues with some edits to our README.v5 script:

- Apply a simple sed filter when we pull in der-protos.h to change
  '*/*' into '* /*', to remove the relevant warnings.

- Instead of inserting an include for asn1_err.h into v5der.c in our
  import script, just put it in ticket5.c, making it easier to see and
  edit. Change this to <asn1_err.h> so it uses the same asn1_err.h as
  in v5gen.c.

- Add a note to run the Heimdal build with COMPILE_ET=no, so the
  Heimdal build system uses the in-tree compile_et, instead of
  whatever is on the relevant system.

With these changes, redo the Heimdal import from the same version of
the Heimdal codebase.

Change-Id: I01e06f2799f1c828b8224c3425079b313ffb5b6b
Reviewed-on: https://gerrit.openafs.org/13816
Tested-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
src/rxkad/README.v5
src/rxkad/asn1_err.h
src/rxkad/der-protos.h
src/rxkad/ticket5.c
src/rxkad/v5der.c