Windows: Use Software/Heimdal registry key for Heimdal specific configuration
The 'plugin_dir' value is Heimdal specific. So keep it in the Software/Heimdal registry key. The Software/Kerberos registry key will also be loaded and will contain generic Kerberos configuration.
This commit is contained in:
@@ -35,7 +35,8 @@
|
|||||||
#error config_reg.c is only for Windows
|
#error config_reg.c is only for Windows
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define REGPATH "SOFTWARE\\Kerberos"
|
#define REGPATH_KERBEROS "SOFTWARE\\Kerberos"
|
||||||
|
#define REGPATH_HEIMDAL "SOFTWARE\\Heimdal"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse a registry value as a string
|
* Parse a registry value as a string
|
||||||
@@ -420,6 +421,26 @@ parse_reg_root(krb5_context context,
|
|||||||
return parse_reg_subkeys(context, key, parent);
|
return parse_reg_subkeys(context, key, parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static krb5_error_code
|
||||||
|
load_config_from_regpath(krb5_context context,
|
||||||
|
HKEY hk_root,
|
||||||
|
const char* key_path,
|
||||||
|
krb5_config_section ** res)
|
||||||
|
{
|
||||||
|
HKEY key = NULL;
|
||||||
|
LONG rcode;
|
||||||
|
krb5_error_code code = 0;
|
||||||
|
|
||||||
|
rcode = RegOpenKeyEx(hk_root, key_path, 0, KEY_READ, &key);
|
||||||
|
if (rcode == ERROR_SUCCESS) {
|
||||||
|
code = parse_reg_root(context, key, res);
|
||||||
|
RegCloseKey(key);
|
||||||
|
key = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load configuration from registry
|
* Load configuration from registry
|
||||||
*
|
*
|
||||||
@@ -436,29 +457,26 @@ krb5_error_code
|
|||||||
_krb5_load_config_from_registry(krb5_context context,
|
_krb5_load_config_from_registry(krb5_context context,
|
||||||
krb5_config_section ** res)
|
krb5_config_section ** res)
|
||||||
{
|
{
|
||||||
HKEY key = NULL;
|
krb5_error_code code;
|
||||||
LONG rcode;
|
|
||||||
krb5_error_code code = 0;
|
|
||||||
|
|
||||||
rcode = RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGPATH, 0, KEY_READ, &key);
|
code = load_config_from_regpath(context, HKEY_LOCAL_MACHINE,
|
||||||
if (rcode == ERROR_SUCCESS) {
|
REGPATH_KERBEROS, res);
|
||||||
code = parse_reg_root(context, key, res);
|
if (code)
|
||||||
RegCloseKey(key);
|
return code;
|
||||||
key = NULL;
|
|
||||||
|
|
||||||
if (code)
|
code = load_config_from_regpath(context, HKEY_LOCAL_MACHINE,
|
||||||
return code;
|
REGPATH_HEIMDAL, res);
|
||||||
}
|
if (code)
|
||||||
|
return code;
|
||||||
|
|
||||||
rcode = RegOpenKeyEx(HKEY_CURRENT_USER, REGPATH, 0, KEY_READ, &key);
|
code = load_config_from_regpath(context, HKEY_CURRENT_USER,
|
||||||
if (rcode == ERROR_SUCCESS) {
|
REGPATH_KERBEROS, res);
|
||||||
code = parse_reg_root(context, key, res);
|
if (code)
|
||||||
RegCloseKey(key);
|
return code;
|
||||||
key = NULL;
|
|
||||||
|
|
||||||
if (code)
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
code = load_config_from_regpath(context, HKEY_CURRENT_USER,
|
||||||
|
REGPATH_HEIMDAL, res);
|
||||||
|
if (code)
|
||||||
|
return code;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -217,7 +217,7 @@
|
|||||||
<Component Id='comp.Plugin.Reg.32' Feature='feature.Main'
|
<Component Id='comp.Plugin.Reg.32' Feature='feature.Main'
|
||||||
Guid='4BC44234-70A4-4CC1-A5AF-4CA76E9F9487' Win64='no'>
|
Guid='4BC44234-70A4-4CC1-A5AF-4CA76E9F9487' Win64='no'>
|
||||||
<RegistryKey Action='createAndRemoveOnUninstall' Root='HKLM'
|
<RegistryKey Action='createAndRemoveOnUninstall' Root='HKLM'
|
||||||
Key='Software\Kerberos'>
|
Key='Software\Heimdal'>
|
||||||
<RegistryValue Name='plugin_dir' Type='multiString' Action='append'
|
<RegistryValue Name='plugin_dir' Type='multiString' Action='append'
|
||||||
Value='"[PLUGINDIR32]"' KeyPath='yes' />
|
Value='"[PLUGINDIR32]"' KeyPath='yes' />
|
||||||
</RegistryKey>
|
</RegistryKey>
|
||||||
@@ -230,7 +230,7 @@
|
|||||||
<Component Id='comp.Plugin.Reg.64' Feature='feature.Main'
|
<Component Id='comp.Plugin.Reg.64' Feature='feature.Main'
|
||||||
Guid='5A99A52E-A4CD-40F8-AFFD-AD61939FC547' Win64='yes'>
|
Guid='5A99A52E-A4CD-40F8-AFFD-AD61939FC547' Win64='yes'>
|
||||||
<RegistryKey Action='createAndRemoveOnUninstall' Root='HKLM'
|
<RegistryKey Action='createAndRemoveOnUninstall' Root='HKLM'
|
||||||
Key='Software\Kerberos'>
|
Key='Software\Heimdal'>
|
||||||
<RegistryValue Name='plugin_dir' Type='multiString' Action='append'
|
<RegistryValue Name='plugin_dir' Type='multiString' Action='append'
|
||||||
Value='"[PLUGINDIR64]"' KeyPath='yes' />
|
Value='"[PLUGINDIR64]"' KeyPath='yes' />
|
||||||
</RegistryKey>
|
</RegistryKey>
|
||||||
|
Reference in New Issue
Block a user