diff options
author | Robert Greenwalt <rgreenwalt@google.com> | 2011-12-07 09:58:48 -0800 |
---|---|---|
committer | Robert Greenwalt <rgreenwalt@google.com> | 2011-12-07 09:58:48 -0800 |
commit | d4420ab2fbb85280d2f507072fe0bd820ac26a3f (patch) | |
tree | 966cb38b7d3d7c75576eba40e3f2912cfd6f8c0d /core/java/android/net/NetworkUtils.java | |
parent | 74b496dd8aab7e29bcba0c6502f773555c4ce29f (diff) | |
download | frameworks_base-d4420ab2fbb85280d2f507072fe0bd820ac26a3f.zip frameworks_base-d4420ab2fbb85280d2f507072fe0bd820ac26a3f.tar.gz frameworks_base-d4420ab2fbb85280d2f507072fe0bd820ac26a3f.tar.bz2 |
Trim leading zeros from ipv4 addrs.
Underlying libraries will interpret leading zeros as octal values and
fail.
bug:5262995
Change-Id: Iff949225bb6b941f7274ee81754e1f41ed719a6c
Diffstat (limited to 'core/java/android/net/NetworkUtils.java')
-rw-r--r-- | core/java/android/net/NetworkUtils.java | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/core/java/android/net/NetworkUtils.java b/core/java/android/net/NetworkUtils.java index e289fc1..72ea02e 100644 --- a/core/java/android/net/NetworkUtils.java +++ b/core/java/android/net/NetworkUtils.java @@ -250,4 +250,31 @@ public class NetworkUtils { } return result; } + + /** + * Trim leading zeros from IPv4 address strings + * Our base libraries will interpret that as octel.. + * Must leave non v4 addresses and host names alone. + * For example, 192.168.000.010 -> 192.168.0.10 + * TODO - fix base libraries and remove this function + * @param addr a string representing an ip addr + * @return a string propertly trimmed + */ + public static String trimV4AddrZeros(String addr) { + String[] octets = addr.split("\\."); + if (octets.length != 4) return addr; + StringBuilder builder = new StringBuilder(16); + String result = null; + for (int i = 0; i < 4; i++) { + try { + if (octets[i].length > 3) return addr; + builder.append(Integer.parseInt(octets[i])); + } catch (NumberFormatException e) { + return addr; + } + if (i < 3) builder.append('.'); + } + result = builder.toString(); + return result; + } } |