Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: python-validators/validators
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: python-validators/validators
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: fix-ipv6-zone-id-controls
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 1 commit
  • 5 files changed
  • 1 contributor

Commits on Oct 22, 2026

  1. Reject control and whitespace characters in IPv6 zone IDs

    ipv6() hands its value to ipaddress, which accepts any non-empty zone
    ID without a "%", so "fe80::1%\0", "fe80::1%\n" and "fe80::1%a b"
    validated, and through hostname() so did "[fe80::1%a b]:22". RFC 4007
    sets no character set for a zone ID, and RFC 9844 (section 6) leaves
    the checks to each implementation, naming NUL as one to reject. Reject
    zone IDs containing ASCII or Unicode control characters or whitespace.
    Numeric and interface-name zone IDs such as "eth0.100" still validate.
    
    email() accepted an IPv6 address literal with a zone ID, such as
    "user@[fe80::1%eth0]". RFC 5321 (4.1.3) defines IPv6-addr without a
    zone, so a "%" in the domain part is now rejected.
    nandgator committed Oct 22, 2026
    Configuration menu
    Copy the full SHA
    213f2ce View commit details
    Browse the repository at this point in the history
Loading