ip/dhcp6d: handle internationalized domain names
This commit is contained in:
parent
347303b136
commit
05f6c08985
|
@ -562,6 +562,7 @@ oservers(uchar *w, int n, Otab *o, Req *r)
|
||||||
static int
|
static int
|
||||||
odomainlist(uchar *w, int n, Otab *o, Req *q)
|
odomainlist(uchar *w, int n, Otab *o, Req *q)
|
||||||
{
|
{
|
||||||
|
char val[256];
|
||||||
Ndbtuple *t;
|
Ndbtuple *t;
|
||||||
int l, r;
|
int l, r;
|
||||||
char *s;
|
char *s;
|
||||||
|
@ -570,7 +571,9 @@ odomainlist(uchar *w, int n, Otab *o, Req *q)
|
||||||
for(t = q->t; t != nil; t = t->entry){
|
for(t = q->t; t != nil; t = t->entry){
|
||||||
if(strcmp(t->attr, o->q[0]) != 0)
|
if(strcmp(t->attr, o->q[0]) != 0)
|
||||||
continue;
|
continue;
|
||||||
for(s = t->val; *s != 0; s++){
|
if(utf2idn(t->val, val, sizeof(val)) == nil)
|
||||||
|
continue;
|
||||||
|
for(s = val; *s != 0; s++){
|
||||||
for(l = 0; *s != 0 && *s != '.'; l++)
|
for(l = 0; *s != 0 && *s != '.'; l++)
|
||||||
s++;
|
s++;
|
||||||
if(r+1+l > n)
|
if(r+1+l > n)
|
||||||
|
@ -578,6 +581,8 @@ odomainlist(uchar *w, int n, Otab *o, Req *q)
|
||||||
w[r++] = l;
|
w[r++] = l;
|
||||||
memmove(w+r, s-l, l);
|
memmove(w+r, s-l, l);
|
||||||
r += l;
|
r += l;
|
||||||
|
if(*s != '.')
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if(r >= n)
|
if(r >= n)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in a new issue