svn commit: samba r10149 - in
branches/SAMBA_4_0/source/heimdal/lib/krb5: .
abartlet at samba.org
abartlet at samba.org
Sat Sep 10 22:25:17 GMT 2005
Author: abartlet
Date: 2005-09-10 22:25:13 +0000 (Sat, 10 Sep 2005)
New Revision: 10149
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=10149
Log:
Update Samba4 to current lorikeet-heimdal.
Andrew Bartlett
Modified:
branches/SAMBA_4_0/source/heimdal/lib/krb5/principal.c
branches/SAMBA_4_0/source/heimdal/lib/krb5/rd_req.c
Changeset:
Modified: branches/SAMBA_4_0/source/heimdal/lib/krb5/principal.c
===================================================================
--- branches/SAMBA_4_0/source/heimdal/lib/krb5/principal.c 2005-09-10 22:13:50 UTC (rev 10148)
+++ branches/SAMBA_4_0/source/heimdal/lib/krb5/principal.c 2005-09-10 22:25:13 UTC (rev 10149)
@@ -91,10 +91,16 @@
return princ_ncomp(principal, component);
}
-krb5_error_code
+enum realm_presence {
+ MAY,
+ MUSTNOT,
+ MUST
+};
+
+static krb5_error_code
parse_name(krb5_context context,
const char *name,
- krb5_boolean short_form,
+ enum realm_presence realm_presence,
krb5_principal *principal)
{
krb5_error_code ret;
@@ -186,7 +192,7 @@
*q++ = c;
}
if (got_realm) {
- if (short_form) {
+ if (realm_presence == MUSTNOT) {
krb5_set_error_string (context, "realm found in 'short' principal expected to be without one!");
ret = KRB5_PARSE_MALFORMED;
goto exit;
@@ -201,12 +207,16 @@
realm[q - start] = 0;
}
}else{
- if (short_form) {
+ if (realm_presence == MAY) {
ret = krb5_get_default_realm (context, &realm);
if (ret)
goto exit;
- } else {
+ } else if (realm_presence == MUSTNOT) {
realm = NULL;
+ } else if (realm_presence == MUST) {
+ krb5_set_error_string (context, "realm NOT found in principal expected to be with one!");
+ ret = KRB5_PARSE_MALFORMED;
+ goto exit;
}
comp[n] = malloc(q - start + 1);
@@ -245,7 +255,7 @@
const char *name,
krb5_principal *principal)
{
- return parse_name(context, name, FALSE, principal);
+ return parse_name(context, name, MAY, principal);
}
krb5_error_code KRB5_LIB_FUNCTION
@@ -253,8 +263,16 @@
const char *name,
krb5_principal *principal)
{
- return parse_name(context, name, TRUE, principal);
+ return parse_name(context, name, MUSTNOT, principal);
}
+
+krb5_error_code KRB5_LIB_FUNCTION
+krb5_parse_name_mustrealm(krb5_context context,
+ const char *name,
+ krb5_principal *principal)
+{
+ return parse_name(context, name, MUST, principal);
+}
static const char quotable_chars[] = " \n\t\b\\/@";
static const char replace_chars[] = " ntb\\/@";
Modified: branches/SAMBA_4_0/source/heimdal/lib/krb5/rd_req.c
===================================================================
--- branches/SAMBA_4_0/source/heimdal/lib/krb5/rd_req.c 2005-09-10 22:13:50 UTC (rev 10148)
+++ branches/SAMBA_4_0/source/heimdal/lib/krb5/rd_req.c 2005-09-10 22:25:13 UTC (rev 10149)
@@ -560,13 +560,16 @@
krb5_keytab keytab,
krb5_flags *ap_req_options,
krb5_ticket **ticket,
- krb5_keyblock **keyblock)
+ krb5_keyblock **return_keyblock)
{
krb5_error_code ret;
krb5_ap_req ap_req;
+ krb5_keyblock *keyblock = NULL;
krb5_principal service = NULL;
- krb5_keyblock *local_keyblock;
+ if (return_keyblock)
+ *return_keyblock = NULL;
+
if (*auth_context == NULL) {
ret = krb5_auth_con_init(context, auth_context);
if (ret)
@@ -597,13 +600,13 @@
&ap_req,
server,
keytab,
- &local_keyblock);
+ &keyblock);
if(ret)
goto out;
} else {
ret = krb5_copy_keyblock(context,
(*auth_context)->keyblock,
- &local_keyblock);
+ &keyblock);
if (ret)
goto out;
}
@@ -612,21 +615,20 @@
auth_context,
&ap_req,
server,
- local_keyblock,
+ keyblock,
0,
ap_req_options,
ticket);
- if (ret) {
- krb5_free_keyblock(context, local_keyblock);
- } else {
- *keyblock = local_keyblock;
- }
+ if (ret == 0 && return_keyblock)
+ *return_keyblock = keyblock;
+ else
+ krb5_free_keyblock(context, keyblock);
+
out:
free_AP_REQ(&ap_req);
if(service)
krb5_free_principal(context, service);
-
return ret;
}
@@ -639,19 +641,14 @@
krb5_flags *ap_req_options,
krb5_ticket **ticket)
{
- krb5_error_code ret;
- krb5_keyblock *keyblock;
+ return krb5_rd_req_return_keyblock(context,
+ auth_context,
+ inbuf,
+ server,
+ keytab,
+ ap_req_options,
+ ticket,
+ NULL);
- ret = krb5_rd_req_return_keyblock(context,
- auth_context,
- inbuf,
- server,
- keytab,
- ap_req_options,
- ticket,
- &keyblock);
-
- krb5_free_keyblock(context, keyblock);
- return ret;
}
More information about the samba-cvs
mailing list