summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2007-05-10 02:37:22 +0000
committerKen Raeburn <raeburn@mit.edu>2007-05-10 02:37:22 +0000
commit86ef9dd0422b95ccf2b29f18847c47b6b9e2e6c5 (patch)
tree083595efb37a3c68d86276a7cf705b22a9cf51c3 /src/lib
parent9ad9a49b388bee85020e9800050df2fcc8954250 (diff)
downloadkrb5-86ef9dd0422b95ccf2b29f18847c47b6b9e2e6c5.tar.gz
krb5-86ef9dd0422b95ccf2b29f18847c47b6b9e2e6c5.tar.xz
krb5-86ef9dd0422b95ccf2b29f18847c47b6b9e2e6c5.zip
Define and use some inline helper functions for comparing data and authdata structures, instead
of open-coding checks of multiple fields everywhere. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19544 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/krb5/ccache/cc_retr.c24
-rw-r--r--src/lib/krb5/krb/chk_trans.c11
-rw-r--r--src/lib/krb5/krb/gc_frm_kdc.c18
-rw-r--r--src/lib/krb5/krb/gc_via_tkt.c15
-rw-r--r--src/lib/krb5/krb/princ_comp.c12
-rw-r--r--src/lib/krb5/krb/rd_req_dec.c7
-rw-r--r--src/lib/krb5/os/an_to_ln.c5
7 files changed, 27 insertions, 65 deletions
diff --git a/src/lib/krb5/ccache/cc_retr.c b/src/lib/krb5/ccache/cc_retr.c
index 43c9da7d0..d6bdaca5b 100644
--- a/src/lib/krb5/ccache/cc_retr.c
+++ b/src/lib/krb5/ccache/cc_retr.c
@@ -1,7 +1,7 @@
/*
* lib/krb5/ccache/cc_retr.c
*
- * Copyright 1990,1991,1999 by the Massachusetts Institute of Technology.
+ * Copyright 1990,1991,1999,2007 by the Massachusetts Institute of Technology.
* All Rights Reserved.
*
* Export of this software from the United States of America may
@@ -114,11 +114,7 @@ data_match(const krb5_data *data1, const krb5_data *data2)
}
if (!data2) return FALSE;
- if (data1->length != data2->length)
- return FALSE;
- else
- return memcmp(data1->data, data2->data, (unsigned) data1->length)
- ? FALSE : TRUE;
+ return data_eq(*data1, *data2) ? TRUE : FALSE;
}
static int
@@ -352,17 +348,11 @@ krb5_creds_compare (krb5_context in_context,
}
if (equal) {
- equal = (in_creds->ticket.length == in_compare_creds->ticket.length &&
- (!in_creds->ticket.length ||
- !memcmp (in_creds->ticket.data, in_compare_creds->ticket.data,
- in_creds->ticket.length)));
+ equal = data_eq(in_creds->ticket, in_compare_creds->ticket);
}
if (equal) {
- equal = (in_creds->second_ticket.length == in_compare_creds->second_ticket.length &&
- (!in_creds->second_ticket.length ||
- !memcmp (in_creds->second_ticket.data, in_compare_creds->second_ticket.data,
- in_creds->second_ticket.length)));
+ equal = data_eq(in_creds->second_ticket, in_compare_creds->second_ticket);
}
if (equal) {
@@ -372,11 +362,7 @@ krb5_creds_compare (krb5_context in_context,
if (authdata && compare_authdata) {
for (i = 0; (equal && authdata[i] && compare_authdata[i]); i++) {
- equal = (authdata[i]->ad_type == compare_authdata[i]->ad_type &&
- authdata[i]->length == compare_authdata[i]->length &&
- (!authdata[i]->length ||
- !memcmp (authdata[i]->contents, compare_authdata[i]->contents,
- authdata[i]->length)));
+ equal = authdata_eq(*authdata[i], *compare_authdata[i]);
}
if (equal) { equal = (!authdata[i] && !compare_authdata[i]); }
} else {
diff --git a/src/lib/krb5/krb/chk_trans.c b/src/lib/krb5/krb/chk_trans.c
index 9fe73c878..2a2854259 100644
--- a/src/lib/krb5/krb/chk_trans.c
+++ b/src/lib/krb5/krb/chk_trans.c
@@ -1,7 +1,7 @@
/*
* lib/krb5/krb/chk_trans.c
*
- * Copyright 2001 by the Massachusetts Institute of Technology.
+ * Copyright 2001, 2007 by the Massachusetts Institute of Technology.
* All Rights Reserved.
*
* Export of this software from the United States of America may
@@ -292,13 +292,6 @@ struct check_data {
krb5_principal *tgs;
};
-static int
-same_data (krb5_data *d1, krb5_data *d2)
-{
- return (d1->length == d2->length
- && !memcmp (d1->data, d2->data, d1->length));
-}
-
static krb5_error_code
check_realm_in_list (krb5_data *realm, void *data)
{
@@ -307,7 +300,7 @@ check_realm_in_list (krb5_data *realm, void *data)
Tprintf ((".. checking '%.*s'\n", (int) realm->length, realm->data));
for (i = 0; cdata->tgs[i]; i++) {
- if (same_data (krb5_princ_realm (cdata->ctx, cdata->tgs[i]), realm))
+ if (data_eq (*krb5_princ_realm (cdata->ctx, cdata->tgs[i]), *realm))
return 0;
}
Tprintf (("BAD!\n"));
diff --git a/src/lib/krb5/krb/gc_frm_kdc.c b/src/lib/krb5/krb/gc_frm_kdc.c
index 5b9d3917a..a064a8e52 100644
--- a/src/lib/krb5/krb/gc_frm_kdc.c
+++ b/src/lib/krb5/krb/gc_frm_kdc.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994,2003,2005 by the Massachusetts Institute of Technology.
+ * Copyright (c) 1994,2003,2005,2007 by the Massachusetts Institute of Technology.
* Copyright (c) 1994 CyberSAFE Corporation
* Copyright (c) 1993 Open Computing Security Group
* Copyright (c) 1990,1991 by the Massachusetts Institute of Technology.
@@ -139,12 +139,9 @@ static void tr_dbg_rtree(struct tr_state *, const char *, krb5_principal);
#define HARD_CC_ERR(r) ((r) && (r) != KRB5_CC_NOTFOUND && \
(r) != KRB5_CC_NOT_KTYPE)
-#define IS_TGS_PRINC(c, p) \
- ((krb5_princ_size((c), (p)) == 2) && \
- (krb5_princ_component((c), (p), 0)->length == \
- KRB5_TGS_NAME_SIZE) && \
- (!memcmp(krb5_princ_component((c), (p), 0)->data, \
- KRB5_TGS_NAME, KRB5_TGS_NAME_SIZE)))
+#define IS_TGS_PRINC(c, p) \
+ (krb5_princ_size((c), (p)) == 2 && \
+ data_eq_string(*krb5_princ_component((c), (p), 0), KRB5_TGS_NAME))
/*
* Flags for ccache lookups of cross-realm TGTs.
@@ -447,9 +444,7 @@ find_nxt_kdc(struct tr_state *ts)
r2 = krb5_princ_component(ts->ctx, *kdcptr, 1);
- if (r1 != NULL && r2 != NULL &&
- r1->length == r2->length &&
- !memcmp(r1->data, r2->data, r1->length)) {
+ if (r1 != NULL && r2 != NULL && data_eq(*r1, *r2)) {
break;
}
}
@@ -929,8 +924,7 @@ krb5_get_cred_from_kdc_opt(krb5_context context, krb5_ccache ccache,
r1 = &referral_tgts[referral_count-1]->server->data[1];
r2 = &(*out_cred)->server->data[1];
- if (r1->length == r2->length &&
- !memcmp(r1->data, r2->data, r1->length)) {
+ if (data_eq(*r1, *r2)) {
DPRINTF(("gc_from_kdc: referred back to "
"previous realm; fall back\n"));
krb5_free_creds(context, *out_cred);
diff --git a/src/lib/krb5/krb/gc_via_tkt.c b/src/lib/krb5/krb/gc_via_tkt.c
index 8ee5721a7..9d992d810 100644
--- a/src/lib/krb5/krb/gc_via_tkt.c
+++ b/src/lib/krb5/krb/gc_via_tkt.c
@@ -1,7 +1,7 @@
/*
* lib/krb5/krb/gc_via_tgt.c
*
- * Copyright 1990,1991 by the Massachusetts Institute of Technology.
+ * Copyright 1990,1991,2007 by the Massachusetts Institute of Technology.
* All Rights Reserved.
*
* Export of this software from the United States of America may
@@ -33,12 +33,9 @@
#define in_clock_skew(date, now) (labs((date)-(now)) < context->clockskew)
-#define IS_TGS_PRINC(c, p) \
- ((krb5_princ_size((c), (p)) == 2) && \
- (krb5_princ_component((c), (p), 0)->length == \
- KRB5_TGS_NAME_SIZE) && \
- (!memcmp(krb5_princ_component((c), (p), 0)->data, \
- KRB5_TGS_NAME, KRB5_TGS_NAME_SIZE)))
+#define IS_TGS_PRINC(c, p) \
+ (krb5_princ_size((c), (p)) == 2 && \
+ data_eq_string(*krb5_princ_component((c), (p), 0), KRB5_TGS_NAME))
static krb5_error_code
krb5_kdcrep2creds(krb5_context context, krb5_kdc_rep *pkdcrep, krb5_address *const *address, krb5_data *psectkt, krb5_creds **ppcreds)
@@ -146,9 +143,7 @@ check_reply_server(krb5_context context, krb5_flags kdcoptions,
* effectively checks this.
*/
if (krb5_realm_compare(context, in_cred->client, in_cred->server) &&
- in_cred->server->data[1].length == in_cred->client->realm.length &&
- !memcmp(in_cred->client->realm.data, in_cred->server->data[1].data,
- in_cred->client->realm.length)) {
+ data_eq(*in_cred->server->data[1], *in_cred->client->realm) {
/* Attempted to rewrite local TGS. */
return KRB5_KDCREP_MODIFIED;
}
diff --git a/src/lib/krb5/krb/princ_comp.c b/src/lib/krb5/krb/princ_comp.c
index cb1a652bd..6e033ad91 100644
--- a/src/lib/krb5/krb/princ_comp.c
+++ b/src/lib/krb5/krb/princ_comp.c
@@ -1,7 +1,7 @@
/*
* lib/krb5/krb/princ_comp.c
*
- * Copyright 1990,1991 by the Massachusetts Institute of Technology.
+ * Copyright 1990,1991,2007 by the Massachusetts Institute of Technology.
* All Rights Reserved.
*
* Export of this software from the United States of America may
@@ -33,11 +33,8 @@
krb5_boolean KRB5_CALLCONV
krb5_realm_compare(krb5_context context, krb5_const_principal princ1, krb5_const_principal princ2)
{
- if (krb5_princ_realm(context, princ1)->length !=
- krb5_princ_realm(context, princ2)->length ||
- memcmp (krb5_princ_realm(context, princ1)->data,
- krb5_princ_realm(context, princ2)->data,
- krb5_princ_realm(context, princ2)->length))
+ if (!data_eq(*krb5_princ_realm(context, princ1),
+ *krb5_princ_realm(context, princ2)))
return FALSE;
return TRUE;
@@ -59,8 +56,7 @@ krb5_principal_compare(krb5_context context, krb5_const_principal princ1, krb5_c
for (i = 0; i < (int) nelem; i++) {
register const krb5_data *p1 = krb5_princ_component(context, princ1, i);
register const krb5_data *p2 = krb5_princ_component(context, princ2, i);
- if (p1->length != p2->length ||
- memcmp(p1->data, p2->data, p1->length))
+ if (!data_eq(*p1, *p2))
return FALSE;
}
return TRUE;
diff --git a/src/lib/krb5/krb/rd_req_dec.c b/src/lib/krb5/krb/rd_req_dec.c
index a4f825a76..2ab5da5d4 100644
--- a/src/lib/krb5/krb/rd_req_dec.c
+++ b/src/lib/krb5/krb/rd_req_dec.c
@@ -2,7 +2,7 @@
* lib/krb5/krb/rd_req_dec.c
*
* Copyright (c) 1994 CyberSAFE Corporation.
- * Copyright 1990,1991 by the Massachusetts Institute of Technology.
+ * Copyright 1990,1991,2007 by the Massachusetts Institute of Technology.
* All Rights Reserved.
*
* Export of this software from the United States of America may
@@ -189,9 +189,8 @@ goto cleanup;
*/
krb5_get_default_realm(context, &lrealm);
if ((trans->tr_contents.data && trans->tr_contents.data[0]) ||
- strlen(lrealm) != realm->length ||
- memcmp(lrealm, realm->data, strlen(lrealm))) {
- retval = KRB5KRB_AP_ERR_ILL_CR_TKT;
+ !data_eq_string(*realm, lrealm)) {
+ retval = KRB5KRB_AP_ERR_ILL_CR_TKT;
}
free(lrealm);
}
diff --git a/src/lib/krb5/os/an_to_ln.c b/src/lib/krb5/os/an_to_ln.c
index 0d3188309..d04b85cdb 100644
--- a/src/lib/krb5/os/an_to_ln.c
+++ b/src/lib/krb5/os/an_to_ln.c
@@ -1,7 +1,7 @@
/*
* lib/krb5/os/an_to_ln.c
*
- * Copyright 1990,1991 by the Massachusetts Institute of Technology.
+ * Copyright 1990,1991,2007 by the Massachusetts Institute of Technology.
* All Rights Reserved.
*
* Export of this software from the United States of America may
@@ -630,8 +630,7 @@ default_an_to_ln(krb5_context context, krb5_const_principal aname, const unsigne
if ((retval = krb5_get_default_realm(context, &def_realm))) {
return(retval);
}
- if (((size_t) realm_length != strlen(def_realm)) ||
- (memcmp(def_realm, krb5_princ_realm(context, aname)->data, realm_length))) {
+ if (!data_eq_string(*krb5_princ_realm(context, aname), def_realm)) {
free(def_realm);
return KRB5_LNAME_NOTRANS;
}