diff options
| author | Ken Raeburn <raeburn@mit.edu> | 2007-05-10 02:37:22 +0000 |
|---|---|---|
| committer | Ken Raeburn <raeburn@mit.edu> | 2007-05-10 02:37:22 +0000 |
| commit | 86ef9dd0422b95ccf2b29f18847c47b6b9e2e6c5 (patch) | |
| tree | 083595efb37a3c68d86276a7cf705b22a9cf51c3 /src/lib | |
| parent | 9ad9a49b388bee85020e9800050df2fcc8954250 (diff) | |
| download | krb5-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.c | 24 | ||||
| -rw-r--r-- | src/lib/krb5/krb/chk_trans.c | 11 | ||||
| -rw-r--r-- | src/lib/krb5/krb/gc_frm_kdc.c | 18 | ||||
| -rw-r--r-- | src/lib/krb5/krb/gc_via_tkt.c | 15 | ||||
| -rw-r--r-- | src/lib/krb5/krb/princ_comp.c | 12 | ||||
| -rw-r--r-- | src/lib/krb5/krb/rd_req_dec.c | 7 | ||||
| -rw-r--r-- | src/lib/krb5/os/an_to_ln.c | 5 |
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; } |
