This script analyzes the export lists for MIT Kerberos for Windows,
export lists for Heimdal DLLs and the symbol lists from the shim code
and generates the appropriate export definition (.DEF) files.
.DEF files that are generated are committed to the source tree because
otherwise having MIT KfW DLLs around would be a build requirement. If
there is any change to the shim code, the export .DEF files should be
rebuilt using:
nmake /f NTMakefile DEV=1 gen-defs
.. from the packages/windows/kfw_shim directory. The new .DEF files
should then be commited.
The shim code creates DLLs that intend to be ABI compatible with MIT
Kerberos for Windows DLLs. At its current state, the shim isn't
complete and there are multiple functions that are missing.
Fix manifests to include manifestVersion attribute and introduce an
application manifest. The application manifest will be included in
the eventual SDK so that applications that depend on Heimdal can
correctly reference the Heimdal assemblies.
If RANDFILE and HOME environment variables aren't defined, failover to
looking up the user's profile path. In particular, default to a file
named .rnd in the user's local (non-roamin) application data
directory.
During a test run, cross check the Windows exports list against the
version-script files. For the test to pass, all symbols on either
list should be accounted for.
If there are symbols that are specific to Windows or symbols that are
not included on Windows, they should be annotated in the .def file as
follows:
;! non_windows_symbol
common_symbol
windows_only_symbol ;!
Once DLLs and EXEs are built, they need to have their manifests
processed and signed. These steps are encapsulated in the EXEPREP and
DLLPREP Makefile macros. Use them instead of invoking each processing
macro individually.
String argument to WSAStringToAddress() is not const, while argument
to inet_pton() is. Create a non-const string for the purpose of
calling WSAStringToAddress()
struct checksum_type::checksum had a return value of krb5_enctype,
even though implementations returned krb5_error_code. Change
declaration to match implementation.
Appease the compiler by resolving some of the reported warnings,
including:
- Control paths that don't return.
- Potentially uninitialized variables.
- Unused local variables.
- Unreachable code.
- Type safety.
- Synchronize declarations with definitions for functions.