krb5: Add _krb5_parse_address_no_lookup()

This commit is contained in:
Nicolas Williams
2021-04-14 19:25:39 -05:00
parent 2d1fee6d11
commit 16d6bda3aa
3 changed files with 32 additions and 12 deletions

View File

@@ -1143,6 +1143,32 @@ krb5_print_address (const krb5_address *addr,
return 0; return 0;
} }
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
_krb5_parse_address_no_lookup(krb5_context context,
const char *string,
krb5_addresses *addresses)
{
int i;
addresses->len = 0;
addresses->val = NULL;
for(i = 0; i < num_addrs; i++) {
if(at[i].parse_addr) {
krb5_address addr;
if((*at[i].parse_addr)(context, string, &addr) == 0) {
ALLOC_SEQ(addresses, 1);
if (addresses->val == NULL)
return krb5_enomem(context);
addresses->val[0] = addr;
return 0;
}
}
}
return -1;
}
/** /**
* krb5_parse_address returns the resolved hostname in string to the * krb5_parse_address returns the resolved hostname in string to the
* krb5_addresses addresses . * krb5_addresses addresses .
@@ -1161,6 +1187,7 @@ krb5_parse_address(krb5_context context,
const char *string, const char *string,
krb5_addresses *addresses) krb5_addresses *addresses)
{ {
krb5_error_code ret;
int i, n; int i, n;
struct addrinfo *ai, *a; struct addrinfo *ai, *a;
struct addrinfo hint; struct addrinfo hint;
@@ -1170,18 +1197,9 @@ krb5_parse_address(krb5_context context,
addresses->len = 0; addresses->len = 0;
addresses->val = NULL; addresses->val = NULL;
for(i = 0; i < num_addrs; i++) { ret = _krb5_parse_address_no_lookup(context, string, addresses);
if(at[i].parse_addr) { if (ret == 0 || ret != -1)
krb5_address addr; return ret;
if((*at[i].parse_addr)(context, string, &addr) == 0) {
ALLOC_SEQ(addresses, 1);
if (addresses->val == NULL)
return krb5_enomem(context);
addresses->val[0] = addr;
return 0;
}
}
}
/* if not parsed as numeric address, do a name lookup */ /* if not parsed as numeric address, do a name lookup */
memset(&hint, 0, sizeof(hint)); memset(&hint, 0, sizeof(hint));

View File

@@ -504,6 +504,7 @@ EXPORTS
krb5_pac_parse krb5_pac_parse
krb5_pac_verify krb5_pac_verify
krb5_padata_add krb5_padata_add
_krb5_parse_address_no_lookup
krb5_parse_address krb5_parse_address
krb5_parse_name krb5_parse_name
krb5_parse_name_flags krb5_parse_name_flags

View File

@@ -497,6 +497,7 @@ HEIMDAL_KRB5_2.0 {
krb5_pac_parse; krb5_pac_parse;
krb5_pac_verify; krb5_pac_verify;
krb5_padata_add; krb5_padata_add;
_krb5_parse_address_no_lookup;
krb5_parse_address; krb5_parse_address;
krb5_parse_name; krb5_parse_name;
krb5_parse_name_flags; krb5_parse_name_flags;