ip/dhcp6d: handle internationalized domain names

This commit is contained in:
cinap_lenrek 2018-09-25 20:28:19 +02:00
parent 347303b136
commit 05f6c08985

View file

@ -562,6 +562,7 @@ oservers(uchar *w, int n, Otab *o, Req *r)
static int
odomainlist(uchar *w, int n, Otab *o, Req *q)
{
char val[256];
Ndbtuple *t;
int l, r;
char *s;
@ -570,7 +571,9 @@ odomainlist(uchar *w, int n, Otab *o, Req *q)
for(t = q->t; t != nil; t = t->entry){
if(strcmp(t->attr, o->q[0]) != 0)
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++)
s++;
if(r+1+l > n)
@ -578,6 +581,8 @@ odomainlist(uchar *w, int n, Otab *o, Req *q)
w[r++] = l;
memmove(w+r, s-l, l);
r += l;
if(*s != '.')
break;
}
if(r >= n)
return -1;