Hi SSSD developers,

I like to submit two patches that both fix compilation issues when using
Heimdal as kerberos provider. 

I know the official position regarding Heimdal support. So when the
issues are small, like these two patches, I will try to provide patches
to improve Heimdal support. 

The earlier compilation errors that I reported in issue #1385 where
resolved by
0001-Revert-commit-4c157ecedd52602f75574605ef48d0c48e9bfb.patch 

Should I also open issue ticket(s) for these two patches? 

Thanks

ps Please be lenient, since I am neither a C programmer nor a Git user.

>From 31b674359fdb2ee5ffba55301a87639fa34acb0e Mon Sep 17 00:00:00 2001
From: Rambaldi <gen...@xs4me.net>
Date: Sat, 7 Jul 2012 13:36:06 +0200
Subject: [PATCH 1/2] heimdal: fix compile error in krb5-child-test

---
 src/external/krb5.m4        |    1 +
 src/tests/krb5_child-test.c |    4 ++++
 2 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/src/external/krb5.m4 b/src/external/krb5.m4
index b87ec5c8ec57f19643f8419405d6a119117d6d16..474cb37cb44cd75fc606ed54833fe0a57b5acc6b 100644
--- a/src/external/krb5.m4
+++ b/src/external/krb5.m4
@@ -58,6 +58,7 @@ AC_CHECK_FUNCS([krb5_get_init_creds_opt_alloc krb5_get_error_message \
                 krb5_get_time_offsets \
                 krb5_principal_get_realm \
                 krb5_cc_cache_match \
+                krb5_timestamp_to_sfstring \
                 krb5_cc_get_full_name])
 CFLAGS=$SAVE_CFLAGS
 LIBS=$SAVE_LIBS
diff --git a/src/tests/krb5_child-test.c b/src/tests/krb5_child-test.c
index 636f733636f3c7a433472f9a7bc4054e22d0ef97..760b9586164b17fb28c4bacced52730104843a26 100644
--- a/src/tests/krb5_child-test.c
+++ b/src/tests/krb5_child-test.c
@@ -315,11 +315,15 @@ printtime(krb5_timestamp ts)
     char timestring[BUFSIZ];
     char fill = '\0';
 
+#ifdef HAVE_KRB5_TIMESTAMP_TO_SFSTRING
     kret = krb5_timestamp_to_sfstring(ts, timestring, BUFSIZ, &fill);
     if (kret) {
         KRB5_CHILD_TEST_DEBUG(SSSDBG_OP_FAILURE, kret);
     }
     printf("%s", timestring);
+#else
+    printf("%s", ctime(&ts));
+#endif /* HAVE_KRB5_TIMESTAMP_TO_SFSTRING */
 }
 
 static void
-- 
1.7.8.6

>From 4e0ddbf07846c9fd837cf7c73e78a0cc2a21558f Mon Sep 17 00:00:00 2001
From: Rambaldi <gen...@xs4me.net>
Date: Sat, 7 Jul 2012 13:37:45 +0200
Subject: [PATCH 2/2] heimdal: use sss_krb5_princ_realm to access realm

---
 src/providers/krb5/krb5_child.c |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/providers/krb5/krb5_child.c b/src/providers/krb5/krb5_child.c
index 86050d16dedabf6bd6c39235c6e876bca6037262..f647bf79e62f74ef952e53113f7e276388a01faf 100644
--- a/src/providers/krb5/krb5_child.c
+++ b/src/providers/krb5/krb5_child.c
@@ -839,6 +839,9 @@ static krb5_error_code get_and_save_tgt(struct krb5_req *kr,
 {
     krb5_error_code kerr = 0;
     int ret;
+    const char *realm_name;
+    int realm_length;
+
 
     kerr = sss_krb5_get_init_creds_opt_set_expire_callback(kr->ctx, kr->options,
                                                   sss_krb5_expire_callback_func,
@@ -848,9 +851,10 @@ static krb5_error_code get_and_save_tgt(struct krb5_req *kr,
         DEBUG(1, ("Failed to set expire callback, continue without.\n"));
     }
 
+    sss_krb5_princ_realm(kr->ctx, kr->princ, &realm_name, &realm_length);
+
     DEBUG(SSSDBG_TRACE_FUNC,
-          ("Attempting kinit for realm [%s]\n",
-                  kr->princ->realm.data));
+          ("Attempting kinit for realm [%s]\n",realm_name));
     kerr = krb5_get_init_creds_password(kr->ctx, kr->creds, kr->princ,
                                         password, sss_krb5_prompter, kr, 0,
                                         NULL, kr->options);
@@ -919,6 +923,8 @@ static errno_t changepw_child(int fd, struct krb5_req *kr)
     uint8_t *user_resp;
     char *changepw_princ = NULL;
     krb5_prompter_fct prompter = sss_krb5_prompter;
+    const char *realm_name;
+    int realm_length;
 
     DEBUG(SSSDBG_TRACE_LIBS, ("Password change operation\n"));
 
@@ -951,9 +957,10 @@ static errno_t changepw_child(int fd, struct krb5_req *kr)
         prompter = NULL;
     }
 
+    sss_krb5_princ_realm(kr->ctx, kr->princ, &realm_name, &realm_length);
+
     DEBUG(SSSDBG_TRACE_FUNC,
-          ("Attempting kinit for realm [%s]\n",
-                  kr->princ->realm.data));
+          ("Attempting kinit for realm [%s]\n",realm_name));
     kerr = krb5_get_init_creds_password(kr->ctx, kr->creds, kr->princ,
                                         pass_str, prompter, kr, 0,
                                         changepw_princ,
-- 
1.7.8.6

_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/sssd-devel

Reply via email to