Opened 8 years ago

Last modified 8 years ago

#26378 closed Bug

Incorrect behavior in GenericIPAddressField with protocol='both', unpack_ipv4=False — at Version 6

Reported by: bshen Owned by: Amine Yaiche
Component: Database layer (models, ORM) Version: 1.8
Severity: Normal Keywords:
Cc: bshen Triage Stage: Ready for checkin
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: yes UI/UX: no

Description (last modified by Tim Graham)

Basically, IPv4-mapped IPv6 addresses in the CIDR block ::ffff:0.0.0.0/104 are validated as invalid when unpack_ipv4=False, yet is valid when the first IPv4 octet is non-zero or when unpack_ipv4=True.

# my.app.models
# Django==1.8.6
from django.db import models

class TestIPNoUnpack(models.Model):
    ip = models.GenericIPAddressField(null=False, protocol='both', unpack_ipv4=False)


class TestIPUnpack(models.Model):
    ip = models.GenericIPAddressField(null=False, protocol='both', unpack_ipv4=True)



> python manage.py shell

In [1]: from my.app.models import TestIPNoUnpack, TestIPUnpack

In [2]: testipunpack = TestIPUnpack(ip='::ffff:0.0.0.0')

In [3]: testipunpack.clean_fields()

In [4]: testipunpack.ip
Out[4]: '0.0.0.0'

In [5]: testipnounpack = TestIPNoUnpack(ip='::ffff:0.0.0.0')

In [6]: testipnounpack.clean_fields()

ValidationError: {'ip': [u'Enter a valid IPv4 or IPv6 address.']}

In [7]: testipnounpack2 = TestIPNoUnpack(ip='::ffff:0.255.255.255')

In [8]: testipnounpack2.clean_fields()

ValidationError: {'ip': [u'Enter a valid IPv4 or IPv6 address.']}

In [9]: testipnounpack3 = TestIPNoUnpack(ip='::ffff:1.0.0.0')

In [10]: testipnounpack3.clean_fields()

In [11]: testipnounpack3.ip
Out[11]: '::ffff:1.0.0.0'

Change History (6)

comment:1 by bshen, 8 years ago

Cc: bshen added
Component: UncategorizedDatabase layer (models, ORM)
Easy pickings: set

comment:3 by Tim Graham, 8 years ago

Description: modified (diff)

comment:4 by Amine Yaiche, 8 years ago

Owner: changed from nobody to Amine Yaiche
Status: newassigned
Triage Stage: UnreviewedAccepted

by Amine Yaiche, 8 years ago

Attachment: 26378.diff added

comment:5 by Tim Graham, 8 years ago

Has patch: set

comment:6 by Tim Graham, 8 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top