From 38f1b919884d92a019a881b2a2e4830b0e570a4b Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 18 Apr 2023 11:27:12 -0700 Subject: [PATCH] #12278 to_internal_value is called before validation! need to raise validation error if incorrect format --- netbox/ipam/api/nested_serializers.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/netbox/ipam/api/nested_serializers.py b/netbox/ipam/api/nested_serializers.py index b3ac4eac0..0589998e4 100644 --- a/netbox/ipam/api/nested_serializers.py +++ b/netbox/ipam/api/nested_serializers.py @@ -6,7 +6,7 @@ from ipam import models from ipam.models.l2vpn import L2VPNTermination, L2VPN from ipam.validators import validate_ipaddress_with_mask from netbox.api.serializers import WritableNestedSerializer -from netaddr import IPNetwork +from netaddr import AddrFormatError, IPNetwork __all__ = [ 'IPAddressField', @@ -48,7 +48,12 @@ class IPAddressField(serializers.CharField): self.validators.append(validator) def to_internal_value(self, data): - return IPNetwork(data) + try: + IPNetwork(data) + except AddrFormatError: + raise serializers.ValidationError("Invalid IP address format: {}".format(data)) + except (TypeError, ValueError) as e: + raise serializers.ValidationError(e) def to_representation(self, value): return str(value)