summaryrefslogtreecommitdiffstats
path: root/src/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/util')
-rw-r--r--src/util/sss_krb5.c19
-rw-r--r--src/util/sss_krb5.h9
2 files changed, 28 insertions, 0 deletions
diff --git a/src/util/sss_krb5.c b/src/util/sss_krb5.c
index ab0344c80..674e9fcdd 100644
--- a/src/util/sss_krb5.c
+++ b/src/util/sss_krb5.c
@@ -766,6 +766,25 @@ sss_krb5_component_length_quoted(const krb5_data *src, int flags)
krb5_error_code
+sss_krb5_parse_name_flags(krb5_context context, const char *name, int flags,
+ krb5_principal *principal)
+{
+#ifdef HAVE_KRB5_PARSE_NAME_FLAGS
+ return krb5_parse_name_flags(context, name, flags, principal);
+#else
+ if (flags != 0) {
+ DEBUG(SSSDBG_MINOR_FAILURE, ("krb5_parse_name_flags not available on " \
+ "this plattform, names are parsed " \
+ "without flags. Some features like " \
+ "enterprise principals might not work " \
+ "as expected.\n"));
+ }
+
+ return krb5_parse_name(context, name, principal);
+#endif
+}
+
+krb5_error_code
sss_krb5_unparse_name_flags(krb5_context context, krb5_const_principal principal,
int flags, char **name)
{
diff --git a/src/util/sss_krb5.h b/src/util/sss_krb5.h
index deb0cbff7..5fe7178c1 100644
--- a/src/util/sss_krb5.h
+++ b/src/util/sss_krb5.h
@@ -122,6 +122,15 @@ krb5_error_code KRB5_CALLCONV sss_krb5_get_init_creds_opt_set_fast_flags(
#endif
+#ifndef HAVE_KRB5_PARSE_NAME_FLAGS
+#define KRB5_PRINCIPAL_PARSE_NO_REALM 0x1
+#define KRB5_PRINCIPAL_PARSE_REQUIRE_REALM 0x2
+#define KRB5_PRINCIPAL_PARSE_ENTERPRISE 0x4
+#endif
+krb5_error_code
+sss_krb5_parse_name_flags(krb5_context context, const char *name, int flags,
+ krb5_principal *principal);
+
#ifndef HAVE_KRB5_UNPARSE_NAME_FLAGS
#define KRB5_PRINCIPAL_UNPARSE_SHORT 0x1
#define KRB5_PRINCIPAL_UNPARSE_NO_REALM 0x2