CodeSOD: How to Validate an IP Address
Andy has some concerns about future proofing. In this case, he sends us some C# code that's supposed to validate an IP address.
string[] address = StringTools.splitStr(IP, '.');if (address.length < 4) { throw new Exception("Bad IP format : " + IP); }
Andy writes: "IPv6 will never be a thing!"
It's not just IPv6, of course. There are plenty of ways one might choose to represent an IP address that don't use dot decimal notation- any 32 bit integer is potentially an IP address. But we usually represent the IP address this way. No, there's another problem with this particular parser: it checks in address.length < 4.
Now, this is actually genius. You see, our choices are IPv4 (32 bits of addresses), or IPv6 (128 bits of addresses), but what if we only want, oh, I don't know, 40 bits? Well, this code will think 555.192.168.0.1 is a perfectly valid IP address, and frankly, why shouldn't it be? A perfect bridge between IPv4 and IPv6. I'd call it IPv5, except for the fact that we had to skip 5 because of weird reasons.
Also, C# already has a function for parsing IP addresses which also has the benefit of doing it correctly.
[Advertisement] Utilize BuildMaster to release your software with confidence, at the pace your business demands. Download today!