Commit Graph

60 Commits

Author SHA1 Message Date
CtrlZvi c66c342cb4 bpo-33542: Ignore DUID in uuid.get_node on Windows. (GH-6922)
uuid._ipconfig_getnode did not validate the maximum length of the value,
so long as the value had the same type of formatting as a MAC address.
This let it select DUIDs as MAC addresses. It now requires an exact
length match.
2018-05-20 18:03:25 +03:00
Segev Finer da6c3da6c3 bpo-32370: Use the correct encoding for ipconfig output in the uuid module. (GH-5608) 2018-02-13 08:29:54 +02:00
Bo Bayles 6b273f7f40 bpo-32502: Discard 64-bit (and other invalid) hardware addresses (#5254) 2018-01-23 20:11:44 -05:00
xdegaye 961dbe0548
bpo-32199: The getnode() ip getter now uses 'ip link' instead of 'ip link list' (GH-4696) 2017-12-07 12:59:13 +01:00
Serhiy Storchaka e69fbb6a56
Fix a regression in uuid added in bpo-32107. (#4677)
uuid.get_node() always must return a stable result.
Also added a test for non-reproducibility of _random_getnode().
Original patch by Xavier de Gaye.
2017-12-04 11:51:55 +02:00
Barry Warsaw 23df2d1304
bpo-32107 - Improve MAC address calculation and fix test_uuid.py (#4600)
``uuid.getnode()`` now preferentially returns universally administered MAC addresses if available, over locally administered MAC addresses.  This makes a better guarantee for global uniqueness of UUIDs returned from ``uuid.uuid1()``.  If only locally administered MAC addresses are available, the first such one found is returned.

Also improve internal code style by being explicit about ``return None`` rather than falling off the end of the function.

Improve the test robustness.
2017-11-28 17:26:04 -05:00
Victor Stinner c9409f7c45
Revert "bpo-32107 - Better merge of #4494 (#4576)" (#4593)
This reverts commit 9522a218f7.
2017-11-28 00:30:21 +01:00
Barry Warsaw 9522a218f7
bpo-32107 - Better merge of #4494 (#4576)
Improve UUID1 MAC address calculation and related tests.

There are two bits in the MAC address that are relevant to UUID1.  The first is the locally administered vs. universally administered bit (second least significant of the first octet).   Physical network interfaces such as ethernet ports and wireless adapters will always be universally administered, but some interfaces --such as the interface that MacBook Pros communicate with their Touch Bars-- are locally administered.  The former are guaranteed to be globally unique, while the latter are demonstrably *not* globally unique and are in fact the same on every MBP with a Touch Bar.  With this bit is set, the MAC is locally administered; with it unset it is universally administered.

The other bit is the multicast bit (least significant bit of the first octet).  When no other MAC address can be found, RFC 4122 mandates that a random 48-bit number be generated.  This randomly generated number *must* have the multicast bit set.

The improvements in uuid.py include:

* Preferentially return a universally administered MAC address, falling back to a locally administered address if none of the former can be found.
* Improve several coding style issues, such as adding explicit returns of None, using a more readable bitmask pattern, and assuming that the ultimate fallback, random MAC generation will not fail (and propagating any exception there instead of swallowing them).

Improvements in test_uuid.py include:

* Always testing the calculated MAC for universal administration, unless explicitly disabled (i.e. for the random case), or implicitly disabled due to running in the Travis environment.  Travis test machines have *no* universally administered MAC address at the time of this writing.
2017-11-27 14:40:10 -05:00
Serhiy Storchaka ee1a9a2b78
bpo-9678: Fix determining the MAC address in the uuid module. (#4264)
* Using ifconfig on NetBSD and OpenBSD.
* Using arp on Linux, FreeBSD, NetBSD and OpenBSD.

Based on patch by Takayuki Shimizukawa.
2017-11-04 09:37:32 +02:00
Victor Stinner 4337a0d995 bpo-11063: Fix _uuid module on macOS (#3855)
On macOS, use uuid_generate_time() instead of
uuid_generate_time_safe() of libuuid, since uuid_generate_time_safe()
is not available.
2017-10-02 07:57:59 -07:00
Antoine Pitrou a106aec2ed bpo-11063, bpo-20519: avoid ctypes and improve import time for uuid (#3796)
bpo-11063, bpo-20519: avoid ctypes and improve import time for uuid.
2017-09-28 23:03:06 +02:00
Benjamin Peterson 069306312a remove IRIX support (closes bpo-31341) (#3310)
See PEP 11.
2017-09-04 16:36:05 -07:00
Barry Warsaw 8c130d7f81 bpo-22807: Expose platform UUID generation safety information. (#138)
bpo-22807: Expose platform UUID generation safety information.
2017-02-18 15:45:49 -05:00
Serhiy Storchaka ccd047ea4b Removed unused imports. 2016-04-25 00:12:32 +03:00
Berker Peksag d02eb8a713 Issue #19164: Improve exception message of uuid.UUID()
Patch by jgauthier.
2016-03-20 16:49:10 +02:00
Benjamin Peterson 788cb52905 always use os.urandom for the uuid4 algorithm (closes #25515) 2015-10-29 20:38:04 -07:00
Steve Dower 71a36f735b Issue #24634: Importing uuid should not try to load libc on Windows 2015-07-14 13:25:03 -07:00
Serhiy Storchaka ba9ac5b5c4 Issue #16261: Converted some bare except statements to except statements
with specified exception type.  Original patch by Ramchandra Apte.
2015-05-20 10:33:40 +03:00
Serhiy Storchaka 08448a1f4d Issue #23326: Removed __ne__ implementations. Since fixing default __ne__
implementation in issue #21408 they are redundant.
2015-01-31 12:05:05 +02:00
Serhiy Storchaka ac4aa7b6aa Issue #22902: The "ip" command is now used on Linux to determine MAC address
in uuid.getnode().  Pach by Bruno Cauet.
2014-11-30 20:39:04 +02:00
Serhiy Storchaka fc9fdedd09 Issue #19720: Suppressed context for some exceptions in importlib. 2014-11-21 21:56:57 +02:00
Serhiy Storchaka 525d5aeaae Issue #17293: socket.gethostbyname() can raise an exception of FreeBSD. 2014-11-21 21:55:39 +02:00
Serhiy Storchaka 57b967791a Issue #17293: uuid.getnode() now determines MAC address on AIX using netstat.
Based on patch by Aivars Kalvāns.
2014-11-07 12:23:30 +02:00
Serhiy Storchaka e66bb96929 Issue #17293: uuid.getnode() now determines MAC address on AIX using netstat.
Based on patch by Aivars Kalvāns.
2014-11-07 12:19:40 +02:00
Victor Stinner 3f4d59eb21 Issue #22793, #22637: Add missing "import os" in uuid._ifconfig_getnode() 2014-11-05 16:55:36 +01:00
Victor Stinner b9d0199c07 Issue #22637: avoid using a shell in uuid
Replace os.popen() with subprocess.Popen() in the uuid module.
2014-10-21 22:33:10 +02:00
Serhiy Storchaka c70386ec16 Issue #22131: Fixed a bug in handling an error occured during reading from
a pipe in _ipconfig_getnode().
2014-09-06 22:17:24 +03:00
Serhiy Storchaka fa9be4f6a8 Issue #22131: Modernized the code of the uuid module.
Optimized bytes and bytes_le properties of UUID and UUID constructor with
bytes_le argument.

Fixed a bug in handling an error occured during reading from a pipe in
_ipconfig_getnode().
2014-09-06 22:14:04 +03:00
Serhiy Storchaka 465e60e654 Issue #22033: Reprs of most Python implemened classes now contain actual
class name instead of hardcoded one.
2014-07-25 23:36:00 +03:00
R David Murray bbf18bee3c Merge #19855: restore use of LC_ALL, not LC_MESSAGES 2014-01-18 15:02:00 -05:00
R David Murray 4295353568 #19855: restore use of LC_ALL, not LC_MESSAGES
I didn't realize LC_ALL was an override, and I should have.  I tried to
make a test, but it is not clear that the LC variables actually affect
the strings that uuid is using to parse the command output.
2014-01-18 14:56:10 -05:00
R David Murray 0ce3e9d82b Merge: #19855: uuid.get_node now looks on the PATH for executables on unix. 2013-12-17 21:14:41 -05:00
R David Murray 4be1e24933 #19855: uuid.get_node now looks on the PATH for executables on unix.
Patch by Serhiy Storchaka.
2013-12-17 21:13:16 -05:00
Serhiy Storchaka 822963ed5d Issue #11508: Fixed uuid.getnode() and uuid.uuid1() on environment with
virtual interface.  Original patch by Kent Frazier.
2013-11-26 22:49:36 +02:00
Serhiy Storchaka 56507c7862 Issue #11508: Fixed uuid.getnode() and uuid.uuid1() on environment with
virtual interface.  Original patch by Kent Frazier.
2013-11-26 22:47:16 +02:00
Serhiy Storchaka 5abf3d9926 Issue #18784: The uuid module no more attempts to load libc via ctypes.CDLL,
if all necessary functions are already found in libuuid.
Patch by Evgeny Sologubov.
2013-09-13 07:49:36 +03:00
Serhiy Storchaka 016af3f4d4 Issue #18784: The uuid module no more attempts to load libc via ctypes.CDLL,
if all necessary functions are already found in libuuid.
Patch by Evgeny Sologubov.
2013-09-13 07:46:40 +03:00
Philip Jenvey 1221f6b603 utilize int.from_bytes 2013-08-29 18:33:50 -07:00
Serhiy Storchaka 531381f207 Issue #16102: Make uuid._netbios_getnode() work again on Python 3. 2013-06-09 21:10:13 +03:00
Serhiy Storchaka 6f50b810b7 Issue #16102: Make uuid._netbios_getnode() work again on Python 3. 2013-06-09 21:08:05 +03:00
Andrew Svetlov f7a17b48d7 Replace IOError with OSError (#16715) 2012-12-25 16:47:37 +02:00
Larry Hastings 605a62ddb1 Issue #15118: Change return value of os.uname() and os.times() from
plain tuples to immutable iterable objects with named attributes
(structseq objects).
2012-06-24 04:33:36 -07:00
Brian Curtin 69cd87b5fa Shift the pipe-using code into an else block, then close the pipe
in finally. Removes two ResourceWarnings.
2010-11-05 14:48:35 +00:00
Brian Curtin bf0757137f Fix ResourceWarning for unclosed files (from os.popen) 2010-10-31 01:10:58 +00:00
Ronald Oussoren 0f377a53a5 Merged revisions 82276 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r82276 | ronald.oussoren | 2010-06-27 14:43:47 +0200 (Sun, 27 Jun 2010) | 5 lines

  The uuid library on OSX 10.5 seems to contain the same bug as the one
  on OSX 10.6, therefore don't use it there either.

  This fixes issue8621.
........
2010-06-27 12:45:47 +00:00
Ronald Oussoren ac764d3d5f Merged revisions 80784 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r80784 | ronald.oussoren | 2010-05-05 16:48:37 +0200 (Wed, 05 May 2010) | 9 lines

  The C function used by uuid.uuid4 is broken on
  OSX 10.6 in that after os.fork() the parent and
  child generate the same sequence of UUIDs.

  This patch falls back to the the Python implementation
  on OSX 10.6 or later.

  Fixes issue #8621.
........
2010-05-05 15:32:33 +00:00
Georg Brandl 1d523e1ae1 #7380: Fix some str/bytearray/bytes issues in uuid docs and implementation. 2009-12-19 18:23:28 +00:00
Amaury Forgeot d'Arc b0c29161a2 Merged revisions 67295,67301-67302,67318,67330,67342-67343 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r67295 | benjamin.peterson | 2008-11-20 05:05:12 +0100 (jeu., 20 nov. 2008) | 1 line

  move useful sys.settrace information to the function's documentation from the debugger
........
  r67301 | benjamin.peterson | 2008-11-20 22:25:31 +0100 (jeu., 20 nov. 2008) | 1 line

  fix indentation and a sphinx warning
........
  r67302 | benjamin.peterson | 2008-11-20 22:44:23 +0100 (jeu., 20 nov. 2008) | 1 line

  oops! didn't mean to disable that test
........
  r67318 | amaury.forgeotdarc | 2008-11-21 23:05:48 +0100 (ven., 21 nov. 2008) | 4 lines

  #4363: Let uuid.uuid1() and uuid.uuid4() run even if the ctypes module is not present.

  Will backport to 2.6
........
  r67330 | georg.brandl | 2008-11-22 09:34:14 +0100 (sam., 22 nov. 2008) | 2 lines

  #4364: fix attribute name on ctypes object.
........
  r67342 | amaury.forgeotdarc | 2008-11-22 20:39:38 +0100 (sam., 22 nov. 2008) | 3 lines

  yuvconvert.c is a part of the "sv" module, an old IRIX thing
  and certainly not useful for any Windows build.
........
  r67343 | amaury.forgeotdarc | 2008-11-22 21:01:18 +0100 (sam., 22 nov. 2008) | 5 lines

  #3996: On Windows, PyOS_CheckStack is supposed to protect the interpreter from
  stack overflow. But doing this, it always crashes when the stack is nearly full.

  Reviewed by Martin von Loewis. Will backport to 2.6.
........
2008-11-22 22:18:04 +00:00
Guido van Rossum 254348e201 Rename buffer -> bytearray. 2007-11-21 19:29:53 +00:00
Guido van Rossum 98297ee781 Merging the py3k-pep3137 branch back into the py3k branch.
No detailed change log; just check out the change log for the py3k-pep3137
branch.  The most obvious changes:

  - str8 renamed to bytes (PyString at the C level);
  - bytes renamed to buffer (PyBytes at the C level);
  - PyString and PyUnicode are no longer compatible.

I.e. we now have an immutable bytes type and a mutable bytes type.

The behavior of PyString was modified quite a bit, to make it more
bytes-like.  Some changes are still on the to-do list.
2007-11-06 21:34:58 +00:00