diff options
| -rw-r--r-- | core/java/android/net/NetworkUtils.java | 27 | ||||
| -rw-r--r-- | telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java | 12 | 
2 files changed, 36 insertions, 3 deletions
diff --git a/core/java/android/net/NetworkUtils.java b/core/java/android/net/NetworkUtils.java index e289fc15d0bb..72ea02e92ebe 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; +    }  } diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index 11f162364a36..963db2c6809d 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -914,10 +914,16 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {                          cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.NUMERIC)),                          cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.NAME)),                          cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.APN)), -                        cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.PROXY)), +                        NetworkUtils.trimV4AddrZeros( +                                cursor.getString( +                                cursor.getColumnIndexOrThrow(Telephony.Carriers.PROXY))),                          cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.PORT)), -                        cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.MMSC)), -                        cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.MMSPROXY)), +                        NetworkUtils.trimV4AddrZeros( +                                cursor.getString( +                                cursor.getColumnIndexOrThrow(Telephony.Carriers.MMSC))), +                        NetworkUtils.trimV4AddrZeros( +                                cursor.getString( +                                cursor.getColumnIndexOrThrow(Telephony.Carriers.MMSPROXY))),                          cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.MMSPORT)),                          cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.USER)),                          cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.PASSWORD)),  |