mirror of
https://github.com/python/cpython.git
synced 2025-08-23 02:04:56 +00:00
bpo-32502: Discard 64-bit (and other invalid) hardware addresses (#5254)
This commit is contained in:
parent
0bad4d63c6
commit
6b273f7f40
3 changed files with 38 additions and 6 deletions
16
Lib/uuid.py
16
Lib/uuid.py
|
@ -656,7 +656,12 @@ def _random_getnode():
|
|||
|
||||
_node = None
|
||||
|
||||
def getnode():
|
||||
_NODE_GETTERS_WIN32 = [_windll_getnode, _netbios_getnode, _ipconfig_getnode]
|
||||
|
||||
_NODE_GETTERS_UNIX = [_unix_getnode, _ifconfig_getnode, _ip_getnode,
|
||||
_arp_getnode, _lanscan_getnode, _netstat_getnode]
|
||||
|
||||
def getnode(*, getters=None):
|
||||
"""Get the hardware address as a 48-bit positive integer.
|
||||
|
||||
The first time this runs, it may launch a separate program, which could
|
||||
|
@ -669,19 +674,18 @@ def getnode():
|
|||
return _node
|
||||
|
||||
if sys.platform == 'win32':
|
||||
getters = [_windll_getnode, _netbios_getnode, _ipconfig_getnode]
|
||||
getters = _NODE_GETTERS_WIN32
|
||||
else:
|
||||
getters = [_unix_getnode, _ifconfig_getnode, _ip_getnode,
|
||||
_arp_getnode, _lanscan_getnode, _netstat_getnode]
|
||||
getters = _NODE_GETTERS_UNIX
|
||||
|
||||
for getter in getters + [_random_getnode]:
|
||||
try:
|
||||
_node = getter()
|
||||
except:
|
||||
continue
|
||||
if _node is not None:
|
||||
if (_node is not None) and (0 <= _node < (1 << 48)):
|
||||
return _node
|
||||
assert False, '_random_getnode() returned None'
|
||||
assert False, '_random_getnode() returned invalid value: {}'.format(_node)
|
||||
|
||||
|
||||
_last_timestamp = None
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue