| # Copyright 2010 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| import sys |
| |
| if sys.hexversion >= 0x3000000: |
| basestring = str |
| |
| def getaddrinfo_validate(addrinfos): |
| """ |
| Validate structures returned from getaddrinfo(), |
| since they may be corrupt, especially when python |
| has IPv6 support disabled (bug #340899). |
| """ |
| valid_addrinfos = [] |
| for addrinfo in addrinfos: |
| try: |
| if len(addrinfo) != 5: |
| continue |
| if len(addrinfo[4]) < 2: |
| continue |
| if not isinstance(addrinfo[4][0], basestring): |
| continue |
| except TypeError: |
| continue |
| |
| valid_addrinfos.append(addrinfo) |
| |
| return valid_addrinfos |