shared: add dns_name_parent() call to determine parent domain of a domain
This commit is contained in:
parent
47260caf02
commit
f7455baa01
|
@ -48,7 +48,6 @@ int dns_label_unescape(const char **name, char *dest, size_t sz) {
|
|||
|
||||
assert(name);
|
||||
assert(*name);
|
||||
assert(dest);
|
||||
|
||||
n = *name;
|
||||
d = dest;
|
||||
|
@ -79,9 +78,12 @@ int dns_label_unescape(const char **name, char *dest, size_t sz) {
|
|||
|
||||
else if (*n == '\\' || *n == '.') {
|
||||
/* Escaped backslash or dot */
|
||||
*(d++) = *(n++);
|
||||
|
||||
if (d)
|
||||
*(d++) = *n;
|
||||
sz--;
|
||||
r++;
|
||||
n++;
|
||||
|
||||
} else if (n[0] >= '0' && n[0] <= '9') {
|
||||
unsigned k;
|
||||
|
@ -100,7 +102,8 @@ int dns_label_unescape(const char **name, char *dest, size_t sz) {
|
|||
if (k < ' ' || k > 255 || k == 127)
|
||||
return -EINVAL;
|
||||
|
||||
*(d++) = (char) k;
|
||||
if (d)
|
||||
*(d++) = (char) k;
|
||||
sz--;
|
||||
r++;
|
||||
|
||||
|
@ -111,9 +114,12 @@ int dns_label_unescape(const char **name, char *dest, size_t sz) {
|
|||
} else if ((uint8_t) *n >= (uint8_t) ' ' && *n != 127) {
|
||||
|
||||
/* Normal character */
|
||||
*(d++) = *(n++);
|
||||
|
||||
if (d)
|
||||
*(d++) = *n;
|
||||
sz--;
|
||||
r++;
|
||||
n++;
|
||||
} else
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@ -122,7 +128,7 @@ int dns_label_unescape(const char **name, char *dest, size_t sz) {
|
|||
if (r == 0 && *n)
|
||||
return -EINVAL;
|
||||
|
||||
if (sz >= 1)
|
||||
if (sz >= 1 && d)
|
||||
*d = 0;
|
||||
|
||||
*name = n;
|
||||
|
|
|
@ -47,6 +47,10 @@ int dns_label_unescape_suffix(const char *name, const char **label_end, char *de
|
|||
int dns_label_escape(const char *p, size_t l, char *dest, size_t sz);
|
||||
int dns_label_escape_new(const char *p, size_t l, char **ret);
|
||||
|
||||
static inline int dns_name_parent(const char **name) {
|
||||
return dns_label_unescape(name, NULL, DNS_LABEL_MAX);
|
||||
}
|
||||
|
||||
int dns_label_apply_idna(const char *encoded, size_t encoded_size, char *decoded, size_t decoded_max);
|
||||
int dns_label_undo_idna(const char *encoded, size_t encoded_size, char *decoded, size_t decoded_max);
|
||||
|
||||
|
|
Loading…
Reference in New Issue