-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
Closed
Labels
3.10only security fixesonly security fixes3.11only security fixesonly security fixes3.9only security fixesonly security fixesOS-androidtestsTests in the Lib/test dirTests in the Lib/test dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
BPO | 31643 |
---|---|
Nosy | @warsaw, @xdegaye, @serhiy-storchaka, @native-api |
PRs |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee = None
closed_at = None
created_at = <Date 2017-09-29.21:37:18.944>
labels = ['type-bug', 'tests', '3.9', '3.10', '3.11']
title = 'test_uuid: test_getnode and test_windll_getnode fail if connected to the Internet via an Android phone'
updated_at = <Date 2021-06-14.21:55:20.385>
user = 'https://github.com/native-api'
bugs.python.org fields:
activity = <Date 2021-06-14.21:55:20.385>
actor = 'iritkatriel'
assignee = 'none'
closed = False
closed_date = None
closer = None
components = ['Tests']
creation = <Date 2017-09-29.21:37:18.944>
creator = 'Ivan.Pozdeev'
dependencies = []
files = []
hgrepos = []
issue_num = 31643
keywords = []
message_count = 7.0
messages = ['303360', '303373', '308097', '308100', '308104', '308152', '308194']
nosy_count = 5.0
nosy_names = ['barry', '__Vano', 'xdegaye', 'serhiy.storchaka', 'Ivan.Pozdeev']
pr_nums = ['4448', '4804']
priority = 'normal'
resolution = None
stage = 'patch review'
status = 'open'
superseder = None
type = 'behavior'
url = 'https://bugs.python.org/issue31643'
versions = ['Python 3.9', 'Python 3.10', 'Python 3.11']
Metadata
Metadata
Assignees
Labels
3.10only security fixesonly security fixes3.11only security fixesonly security fixes3.9only security fixesonly security fixesOS-androidtestsTests in the Lib/test dirTests in the Lib/test dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Projects
Milestone
Relationships
Development
Select code repository
Activity
native-api commentedon Sep 29, 2017
Ethernet emulation for some devices like Android phones' tethering use all-zero MAC addresses (which is okay since they don't actually pass Ethernet frames to other NICs). This results in a node ID of 0 if I'm currently connected to the Net via such a device. Which fails range checks in the corresponding tests.
RFC 4122 doesn't actually have any prohibitions of using a node ID of 0. Neither does IEEE 802.3 (or rather, whatever info I gathered on it since the standard's text is not freely available) assign any special meaning to an all-zero MAC address.
The patch also corrects the check call in test_windll_getnode since the tested function always generates UUID from a MAC address.
native-api commentedon Sep 29, 2017
Example failure:
======================================================================
FAIL: test_windll_getnode (test.test_uuid.TestInternals)
----------------------------------------------------------------------
======================================================================
FAIL: test_getnode (test.test_uuid.TestUUID)
----------------------------------------------------------------------
xdegaye commentedon Dec 12, 2017
On a Samsung device with Android 5.1 and tethering enabled, only one network device has a MAC address and it is not an all-zero MAC address.
Ivan can you please provide more information about this problem: which device, what Android version, what is the output of 'ip link' ?
serhiy-storchaka commentedon Dec 12, 2017
I'm not sure that 000000000000 is better than a random address. Even if an all-zero MAC address is not explicitly prohibited it is used in a multiple independent devices. A random address looks more appropriate fore the purpose of generating a UUID.
xdegaye commentedon Dec 12, 2017
I agree, getnode() when obtained from a MAC address should not return 0.
RFC 4122 states (emphasis on 'uniqueness' is mine):
This document specifies three algorithms to generate UUIDs: the
first leverages the unique values of 802 MAC addresses to
guarantee *uniqueness*, ...
Vano commentedon Dec 12, 2017
C:\> ipconfig -all
<...>
Samsung Galaxy S7 - Ethernet адаптер:
DNS-суффикс этого подключения . . :
Описание . . . . . . . . . . . . : Android USB Ethernet/RNDIS
Физический адрес. . . . . . . . . : 00-00-00-00-00-00
Dhcp включен. . . . . . . . . . . : да
Автонастройка включена . . . . . : да
IP-адрес . . . . . . . . . . . . : 192.168.42.2
Маска подсети . . . . . . . . . . : 255.255.255.0
Основной шлюз . . . . . . . . . . : 192.168.42.129
DHCP-сервер . . . . . . . . . . . : 192.168.42.129
DNS-серверы . . . . . . . . . . . : 192.168.42.129
Device name: Samsung Galaxy S7
Model number: SM-G930F
Android version: 6.0.1
Firmware version: G930FXXU1APGJ
Baseband version: G930VVRS4APH1
Build number: MMB29M.G930VVRU2APG5
xdegaye commentedon Dec 13, 2017
So the all-zero MAC address occurs on a Windows box and that explains the test_windll_getnode failure (this test is skipped on Android). I missed that point in your initial post and knowing what Android device you are using is irrelevant.
mhsmith commentedon Mar 6, 2024
According to my tests, on Android API level 21,
getnode
uses theip
command to return the actual MAC address of the device. On API level 34, theip
command no longer returns anything for an unprivileged user, sogetnode
falls back on a random address, as documented. Either way, the resulting address is non-zero.@encukou: So I think this issue can be closed.