diff options
Diffstat (limited to 'src/lib/krb5/krb/addr_srch.c')
-rw-r--r-- | src/lib/krb5/krb/addr_srch.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/lib/krb5/krb/addr_srch.c b/src/lib/krb5/krb/addr_srch.c index efab59f8..11a3ce0 100644 --- a/src/lib/krb5/krb/addr_srch.c +++ b/src/lib/krb5/krb/addr_srch.c @@ -29,6 +29,20 @@ #include "k5-int.h" +static unsigned int +address_count(krb5_address *const *addrlist) +{ + unsigned int i; + + if (addrlist == NULL) + return 0; + + for (i = 0; addrlist[i]; i++) + ; + + return i; +} + /* * if addr is listed in addrlist, or addrlist is null, return TRUE. * if not listed, return FALSE @@ -36,6 +50,14 @@ krb5_boolean krb5_address_search(krb5_context context, const krb5_address *addr, krb5_address *const *addrlist) { + /* + * Treat an address list containing only a NetBIOS address + * as empty, because we presently have no way of associating + * a client with its NetBIOS address. + */ + if (address_count(addrlist) == 1 && + addrlist[0]->addrtype == ADDRTYPE_NETBIOS) + return TRUE; if (!addrlist) return TRUE; for (; *addrlist; addrlist++) { |