lionsoul2014/ip2region · error · Error

invalid ipv6 part '${ps[i]}' should >= 0 and <= 65534

Error message

invalid ipv6 part '${ps[i]}' should >= 0 and <= 65534

What it means

Range guard in the IPv6 parser: a group parsed as hex but exceeded the 16-bit group limit of 0xFFFF (e.g. '2001:db8:12345::1'). Each colon-separated group must fit in two bytes.

Source

Thrown at binding/javascript/util.js:123

                }

                i++;
            }

            dc_num = 1;
            // padding = 8 - start - left
            let padding = 8 - start - (mi - i);
            offset += 2 * padding;
            continue;
        }

        let v = parseInt(s, 16);
        if (isNaN(v)) {
            throw new Error(`invalid ipv6 part '${ps[i]}', a valid hex number expected`);
        }

        if (v < 0 || v > 0xFFFF) {
            throw new Error(`invalid ipv6 part '${ps[i]}' should >= 0 and <= 65534`);
        }

        ipBytes.writeUint16BE(v, offset);
        offset += 2;
    }

    return ipBytes;
}


// parse the specified string ip and return its bytes
// @param  ip string
// @return Buffer
export function parseIP(ipString) {
    let sDot = ipString.indexOf('.');
    let cDot = ipString.indexOf(':');
    if (sDot > -1 && cDot == -1) {
        return _parse_ipv4_addr(ipString);

View on GitHub (pinned to c1a1fc7d59)

Solutions

  1. Split oversized groups into two correct 16-bit groups
  2. Reject any group > 0xFFFF during upstream validation
  3. Check for a missing colon that merged two groups into one
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at binding/javascript/util.js:123 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of lionsoul2014/ip2region@c1a1fc7d59 (2026-09-02). Data as JSON: /api/errors/d9bec39f15c10bd6. Report an issue: GitHub.