mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Issue #11508: Fixed uuid.getnode() and uuid.uuid1() on environment with
virtual interface. Original patch by Kent Frazier.
This commit is contained in:
parent
a04f4e0374
commit
56507c7862
4 changed files with 35 additions and 2 deletions
|
@ -1,5 +1,7 @@
|
||||||
import unittest
|
import unittest
|
||||||
|
from test import support
|
||||||
import builtins
|
import builtins
|
||||||
|
import io
|
||||||
import os
|
import os
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
|
@ -356,6 +358,25 @@ class TestUUID(unittest.TestCase):
|
||||||
|
|
||||||
self.assertEqual(node1, node2)
|
self.assertEqual(node1, node2)
|
||||||
|
|
||||||
|
def test_find_mac(self):
|
||||||
|
data = '''\
|
||||||
|
|
||||||
|
fake hwaddr
|
||||||
|
cscotun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
|
||||||
|
eth0 Link encap:Ethernet HWaddr 12:34:56:78:90:ab
|
||||||
|
'''
|
||||||
|
def mock_popen(cmd):
|
||||||
|
return io.StringIO(data)
|
||||||
|
|
||||||
|
with support.swap_attr(os, 'popen', mock_popen):
|
||||||
|
mac = uuid._find_mac(
|
||||||
|
command='ifconfig',
|
||||||
|
args='',
|
||||||
|
hw_identifiers=['hwaddr'],
|
||||||
|
get_index=lambda x: x + 1,
|
||||||
|
)
|
||||||
|
self.assertEqual(mac, 0x1234567890ab)
|
||||||
|
|
||||||
@unittest.skipUnless(importable('ctypes'), 'requires ctypes')
|
@unittest.skipUnless(importable('ctypes'), 'requires ctypes')
|
||||||
def test_uuid1(self):
|
def test_uuid1(self):
|
||||||
equal = self.assertEqual
|
equal = self.assertEqual
|
||||||
|
|
|
@ -327,8 +327,16 @@ def _find_mac(command, args, hw_identifiers, get_index):
|
||||||
words = line.lower().split()
|
words = line.lower().split()
|
||||||
for i in range(len(words)):
|
for i in range(len(words)):
|
||||||
if words[i] in hw_identifiers:
|
if words[i] in hw_identifiers:
|
||||||
|
try:
|
||||||
return int(
|
return int(
|
||||||
words[get_index(i)].replace(':', ''), 16)
|
words[get_index(i)].replace(':', ''), 16)
|
||||||
|
except (ValueError, IndexError):
|
||||||
|
# Virtual interfaces, such as those provided by
|
||||||
|
# VPNs, do not have a colon-delimited MAC address
|
||||||
|
# as expected, but a 16-byte HWAddr separated by
|
||||||
|
# dashes. These should be ignored in favor of a
|
||||||
|
# real MAC address
|
||||||
|
pass
|
||||||
except IOError:
|
except IOError:
|
||||||
continue
|
continue
|
||||||
return None
|
return None
|
||||||
|
|
|
@ -394,6 +394,7 @@ John Fouhy
|
||||||
Andrew Francis
|
Andrew Francis
|
||||||
Stefan Franke
|
Stefan Franke
|
||||||
Martin Franklin
|
Martin Franklin
|
||||||
|
Kent Frazier
|
||||||
Bruce Frederiksen
|
Bruce Frederiksen
|
||||||
Robin Friedrich
|
Robin Friedrich
|
||||||
Bradley Froehle
|
Bradley Froehle
|
||||||
|
|
|
@ -16,6 +16,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #11508: Fixed uuid.getnode() and uuid.uuid1() on environment with
|
||||||
|
virtual interface. Original patch by Kent Frazier.
|
||||||
|
|
||||||
- Issue #11489: JSON decoder now accepts lone surrogates.
|
- Issue #11489: JSON decoder now accepts lone surrogates.
|
||||||
|
|
||||||
- Issue #19545: Avoid chained exceptions while passing stray % to
|
- Issue #19545: Avoid chained exceptions while passing stray % to
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue