New submission from Nicolai Moore <nicono...@gmail.com>:
When using the tuple-form of constructing IPv4Network and IPv6Network will accept prefixlen outside of the normal allowed ranges. Example: >>> import ipaddress >>> ipaddress.IPv4Network(('172.21.1.0', 400)) IPv4Network('172.21.1.0/400') If given a negative number, it will error but not with a particularly useful error: >>> x = ipaddress.IPv4Network(('172.21.1.0', -1)) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python3.7/ipaddress.py", line 1532, in __init__ self.netmask, self._prefixlen = self._make_netmask(mask) File "/usr/lib64/python3.7/ipaddress.py", line 1112, in _make_netmask netmask = IPv4Address(cls._ip_int_from_prefix(prefixlen)) File "/usr/lib64/python3.7/ipaddress.py", line 444, in _ip_int_from_prefix return cls._ALL_ONES ^ (cls._ALL_ONES >> prefixlen) ValueError: negative shift count Looking at the code, I think all that is needed is a range check within the respective _make_netmask methods in _BaseV4 and _BaseV6 classes ---------- components: Library (Lib) messages: 341839 nosy: niconorsk priority: normal severity: normal status: open title: ipaddres.IPv4Network and ipaddress.IPv6Network tuple construction will accept out of valid range prefixlen type: behavior versions: Python 3.5, Python 3.6, Python 3.7, Python 3.8, Python 3.9 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue36845> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com