mirror of https://github.com/omar-polo/gmid.git
punycode: refactoring
use the correct term "label" instead of "component" when speaking about the parts of a hostname. Also, fix the sizes for max hostname and label.
This commit is contained in:
parent
473e4531d5
commit
35cf19e3f3
5
gmid.h
5
gmid.h
|
@ -51,8 +51,9 @@
|
|||
#define HOSTSLEN 64
|
||||
#define LOCLEN 32
|
||||
|
||||
/* RFC1034 imposes this limit. 63+1 for the NUL-terminator */
|
||||
#define DOMAIN_NAME_LEN (63+1)
|
||||
/* maximum hostname and label length, +1 for the NUL-terminator */
|
||||
#define DOMAIN_NAME_LEN (253+1)
|
||||
#define LABEL_LEN (63+1)
|
||||
|
||||
#define LOGE(c, fmt, ...) logs(LOG_ERR, c, fmt, __VA_ARGS__)
|
||||
#define LOGW(c, fmt, ...) logs(LOG_WARNING, c, fmt, __VA_ARGS__)
|
||||
|
|
22
puny.c
22
puny.c
|
@ -49,7 +49,7 @@ adapt(int delta, int numpoints, int firsttime)
|
|||
}
|
||||
|
||||
static const char *
|
||||
copy_until_delimiter(const char *s, char *out, size_t len)
|
||||
copy_label(const char *s, char *out, size_t len)
|
||||
{
|
||||
char *end, *t;
|
||||
size_t l;
|
||||
|
@ -117,16 +117,16 @@ insert(char *out, size_t len, int codepoint, size_t i)
|
|||
switch (l) {
|
||||
case 2:
|
||||
t[1] = ( codepoint & 0x3F) + 0x80;
|
||||
t[0] = ((codepoint >> 6) & 0x1F) + 0xC0;
|
||||
t[0] = ((codepoint >> 6) & 0x1F) + 0xC0;
|
||||
break;
|
||||
case 3:
|
||||
t[2] = ( codepoint & 0x3F) + 0x80;
|
||||
t[1] = ((codepoint >> 6) & 0x3F) + 0x80;
|
||||
t[1] = ((codepoint >> 6) & 0x3F) + 0x80;
|
||||
t[0] = ((codepoint >> 12) & 0x0F) + 0xE0;
|
||||
break;
|
||||
case 4:
|
||||
t[3] = ( codepoint & 0x3F) + 0x80;
|
||||
t[2] = ((codepoint >> 6) & 0x3F) + 0x80;
|
||||
t[2] = ((codepoint >> 6) & 0x3F) + 0x80;
|
||||
t[1] = ((codepoint >> 12) & 0x3F) + 0x80;
|
||||
t[0] = ((codepoint >> 18) & 0x07) + 0xF0;
|
||||
break;
|
||||
|
@ -152,7 +152,7 @@ decode(const char *str, char *out, size_t len)
|
|||
str += 4;
|
||||
|
||||
if (strchr(str, '-') != NULL) {
|
||||
if ((s = copy_until_delimiter(str, out, len)) == NULL)
|
||||
if ((s = copy_label(str, out, len)) == NULL)
|
||||
return 0;
|
||||
if (*s == '-')
|
||||
s++;
|
||||
|
@ -205,7 +205,7 @@ decode(const char *str, char *out, size_t len)
|
|||
}
|
||||
|
||||
static const char *
|
||||
end_of_component(const char *hostname)
|
||||
end_of_label(const char *hostname)
|
||||
{
|
||||
for (; *hostname != '\0' && *hostname != '.'; ++hostname)
|
||||
; /* nop */
|
||||
|
@ -215,7 +215,7 @@ end_of_component(const char *hostname)
|
|||
int
|
||||
puny_decode(const char *hostname, char *out, size_t len)
|
||||
{
|
||||
char comp[DOMAIN_NAME_LEN];
|
||||
char label[LABEL_LEN];
|
||||
const char *s, *end;
|
||||
size_t l;
|
||||
|
||||
|
@ -227,13 +227,13 @@ puny_decode(const char *hostname, char *out, size_t len)
|
|||
for (;;) {
|
||||
end = end_of_component(s);
|
||||
l = end - s;
|
||||
if (l >= sizeof(comp))
|
||||
if (l >= sizeof(label))
|
||||
return 0;
|
||||
|
||||
memcpy(comp, s, end - s);
|
||||
comp[end - s] = '\0';
|
||||
memcpy(label, s, l);
|
||||
label[l] = '\0';
|
||||
|
||||
if (!decode(comp, out, len))
|
||||
if (!decode(label, out, len))
|
||||
return 0;
|
||||
|
||||
if (*end == '\0')
|
||||
|
|
Loading…
Reference in New Issue