plugin interface functions must specify calling convention
commit6cfbde4d8632e36b2192115f47d9cbfc367c52ef
authorJeffrey Altman <jaltman@secure-endpoints.com>
Thu, 18 Nov 2021 14:16:45 +0000 (18 09:16 -0500)
committerNico Williams <nico@cryptonector.com>
Fri, 19 Nov 2021 00:52:54 +0000 (18 18:52 -0600)
tree055db648d171de9207c0cd549de3b6e0dfd9e25b
parent357a38fc7fb582ae73f4b7f4a90a4b0b871b149e
plugin interface functions must specify calling convention

The plugin interfaces were originally implemented for use on
Unix where KRB5_CALLCONV, HEIM_CALLCONV and similar are defined
as nothing.  However, on 32-bit Windows the calling convention
matters and executing a __stdcall function through a __cdecl
function pointer will result in failures.

This change updates the krb5plugin_windc, krb5plugin_service_locate,
krb5plugin_send_to_kdc plugins to specify the KRB5_CALLCONV for
functions.   This brings the plugins into compliance with the
heim_plugin_common interface requirement that init() and fini()
use the platform specified HEIM_CALLCONV.

The krb5-plugin(7) man page is updated and the lib/krb5/test_plugin
test is also fixed.

With this change all tests pass on 32-bit Windows.

Change-Id: Ic9d2e1285c9c179e3898dc9d071ed092bcddc406
kdc/windc_plugin.h
lib/krb5/krb5-plugin.7
lib/krb5/locate_plugin.h
lib/krb5/send_to_kdc_plugin.h
lib/krb5/test_plugin.c