[Python-checkins] bpo-32370: Use the correct encoding for ipconfig output in the uuid module. (GH-5608)
Serhiy Storchaka
webhook-mailer at python.org
Tue Feb 13 01:29:58 EST 2018
https://github.com/python/cpython/commit/da6c3da6c33c6bf794f741e348b9c6d86cc43ec5
commit: da6c3da6c33c6bf794f741e348b9c6d86cc43ec5
branch: master
author: Segev Finer <segev208 at gmail.com>
committer: Serhiy Storchaka <storchaka at gmail.com>
date: 2018-02-13T08:29:54+02:00
summary:
bpo-32370: Use the correct encoding for ipconfig output in the uuid module. (GH-5608)
files:
A Misc/NEWS.d/next/Windows/2018-02-10-15-38-19.bpo-32370.kcKuct.rst
M Lib/uuid.py
diff --git a/Lib/uuid.py b/Lib/uuid.py
index ef7b3b59241f..9cb73e877181 100644
--- a/Lib/uuid.py
+++ b/Lib/uuid.py
@@ -468,7 +468,7 @@ def _netstat_getnode():
def _ipconfig_getnode():
"""Get the hardware address on Windows by running ipconfig.exe."""
- import os, re
+ import os, re, subprocess
first_local_mac = None
dirs = ['', r'c:\windows\system32', r'c:\winnt\system32']
try:
@@ -480,11 +480,13 @@ def _ipconfig_getnode():
pass
for dir in dirs:
try:
- pipe = os.popen(os.path.join(dir, 'ipconfig') + ' /all')
+ proc = subprocess.Popen([os.path.join(dir, 'ipconfig'), '/all'],
+ stdout=subprocess.PIPE,
+ encoding="oem")
except OSError:
continue
- with pipe:
- for line in pipe:
+ with proc:
+ for line in proc.stdout:
value = line.split(':')[-1].strip().lower()
if re.match('([0-9a-f][0-9a-f]-){5}[0-9a-f][0-9a-f]', value):
mac = int(value.replace('-', ''), 16)
diff --git a/Misc/NEWS.d/next/Windows/2018-02-10-15-38-19.bpo-32370.kcKuct.rst b/Misc/NEWS.d/next/Windows/2018-02-10-15-38-19.bpo-32370.kcKuct.rst
new file mode 100644
index 000000000000..7f076d45bef9
--- /dev/null
+++ b/Misc/NEWS.d/next/Windows/2018-02-10-15-38-19.bpo-32370.kcKuct.rst
@@ -0,0 +1,2 @@
+Use the correct encoding for ipconfig output in the uuid module.
+Patch by Segev Finer.
More information about the Python-checkins
mailing list