Loading src/common/compat.c +13 −7 Original line number Diff line number Diff line Loading @@ -1733,14 +1733,19 @@ tor_inet_pton(int af, const char *src, void *dst) return 0; if (TOR_ISXDIGIT(*src)) { char *next; int len; long r = strtol(src, &next, 16); if (next > 4+src) return 0; if (next == src) return 0; if (r<0 || r>65536) tor_assert(next != NULL); tor_assert(next != src); len = *next == '\0' ? eow - src : next - src; if (len > 4) return 0; if (len > 1 && !TOR_ISXDIGIT(src[1])) return 0; /* 0x is not valid */ tor_assert(r >= 0); tor_assert(r < 65536); words[i++] = (uint16_t)r; setWords++; src = next; Loading @@ -1750,7 +1755,8 @@ tor_inet_pton(int af, const char *src, void *dst) } else if (*src == ':' && i > 0 && gapPos == -1) { gapPos = i; ++src; } else if (*src == ':' && i == 0 && src[1] == ':' && gapPos==-1) { } else if (*src == ':' && i == 0 && src+1 < eow && src[1] == ':' && gapPos == -1) { gapPos = i; src += 2; } else { Loading Loading
src/common/compat.c +13 −7 Original line number Diff line number Diff line Loading @@ -1733,14 +1733,19 @@ tor_inet_pton(int af, const char *src, void *dst) return 0; if (TOR_ISXDIGIT(*src)) { char *next; int len; long r = strtol(src, &next, 16); if (next > 4+src) return 0; if (next == src) return 0; if (r<0 || r>65536) tor_assert(next != NULL); tor_assert(next != src); len = *next == '\0' ? eow - src : next - src; if (len > 4) return 0; if (len > 1 && !TOR_ISXDIGIT(src[1])) return 0; /* 0x is not valid */ tor_assert(r >= 0); tor_assert(r < 65536); words[i++] = (uint16_t)r; setWords++; src = next; Loading @@ -1750,7 +1755,8 @@ tor_inet_pton(int af, const char *src, void *dst) } else if (*src == ':' && i > 0 && gapPos == -1) { gapPos = i; ++src; } else if (*src == ':' && i == 0 && src[1] == ':' && gapPos==-1) { } else if (*src == ':' && i == 0 && src+1 < eow && src[1] == ':' && gapPos == -1) { gapPos = i; src += 2; } else { Loading