﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
26378	Allowed a left byte of zero in mixed IPv4/IPv6 validation	bshen	Amine Yaiche	"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.

{{{ #!python
# 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'

}}}"	Bug	closed	Database layer (models, ORM)	1.8	Normal	fixed		bshen	Ready for checkin	1	0	0	0	1	0
