$OpenBSD$

http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/pkgsrc/security/py-kerberos/patches/patch-src_kerberosgss.c?rev=1.1
https://svnweb.freebsd.org/ports/head/security/py-kerberos/files/extra-patch-src_kerberosgss.c?revision=460369&view=co

Index: src/kerberosgss.c
--- src/kerberosgss.c.orig
+++ src/kerberosgss.c
@@ -43,7 +43,7 @@ char* server_principal_details(const char* service, co
     int code;
     krb5_context kcontext;
     krb5_keytab kt = NULL;
-    krb5_kt_cursor cursor = NULL;
+    krb5_kt_cursor cursor;
     krb5_keytab_entry entry;
     char* pname = NULL;
     
@@ -67,7 +67,7 @@ char* server_principal_details(const char* service, co
             KrbException_class,
             Py_BuildValue("((s:i))", "Cannot get default keytab", code)
         );
-        goto end;
+        goto end1;
     }
     
     if ((code = krb5_kt_start_seq_get(kcontext, kt, &cursor))) {
@@ -77,7 +77,7 @@ char* server_principal_details(const char* service, co
                 "((s:i))", "Cannot get sequence cursor from keytab", code
             )
         );
-        goto end;
+        goto end1;
     }
     
     while ((code = krb5_kt_next_entry(kcontext, kt, &entry, &cursor)) == 0) {
@@ -98,13 +98,13 @@ char* server_principal_details(const char* service, co
                 goto end;
             }
             strcpy(result, pname);
-            krb5_free_unparsed_name(kcontext, pname);
-            krb5_free_keytab_entry_contents(kcontext, &entry);
+            krb5_xfree(pname);
+            krb5_kt_free_entry(kcontext, &entry);
             break;
         }
         
-        krb5_free_unparsed_name(kcontext, pname);
-        krb5_free_keytab_entry_contents(kcontext, &entry);
+        krb5_xfree(pname);
+        krb5_kt_free_entry(kcontext, &entry);
     }
     
     if (result == NULL) {
@@ -115,9 +115,8 @@ char* server_principal_details(const char* service, co
     }
     
 end:
-    if (cursor) {
-        krb5_kt_end_seq_get(kcontext, kt, &cursor);
-    }
+    krb5_kt_end_seq_get(kcontext, kt, &cursor);
+end1:
     if (kt) {
         krb5_kt_close(kcontext, kt);
     }
@@ -150,7 +149,7 @@ int authenticate_gss_client_init(
     name_token.value = (char *)service;
     
     maj_stat = gss_import_name(
-        &min_stat, &name_token, gss_krb5_nt_service_name, &state->server_name
+        &min_stat, &name_token, GSS_C_NT_HOSTBASED_SERVICE, &state->server_name
     );
     
     if (GSS_ERROR(maj_stat)) {
